diff --git a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/keygen/KeyGenUtils.java b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/keygen/KeyGenUtils.java index 1fd46d31e5ba7..fa3c212ee0804 100644 --- a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/keygen/KeyGenUtils.java +++ b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/keygen/KeyGenUtils.java @@ -75,7 +75,9 @@ public static String[] extractRecordKeys(String recordKey) { String[] fieldKV = recordKey.split(","); return Arrays.stream(fieldKV).map(kv -> { final String[] kvArray = kv.split(":"); - if (kvArray[1].equals(NULL_RECORDKEY_PLACEHOLDER)) { + if (kvArray.length == 1) { + return kvArray[0]; + } else if (kvArray[1].equals(NULL_RECORDKEY_PLACEHOLDER)) { return null; } else if (kvArray[1].equals(EMPTY_RECORDKEY_PLACEHOLDER)) { return ""; diff --git a/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/keygen/TestKeyGenUtils.java b/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/keygen/TestKeyGenUtils.java index 06a6fcd7d76d3..82ea37e90b220 100644 --- a/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/keygen/TestKeyGenUtils.java +++ b/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/keygen/TestKeyGenUtils.java @@ -25,6 +25,7 @@ public class TestKeyGenUtils { @Test public void testExtractRecordKeys() { + // test complex key form: field1:val1,field2:val2,... String[] s1 = KeyGenUtils.extractRecordKeys("id:1"); Assertions.assertArrayEquals(new String[]{"1"}, s1); @@ -33,5 +34,9 @@ public void testExtractRecordKeys() { String[] s3 = KeyGenUtils.extractRecordKeys("id:1,id2:__null__,id3:__empty__"); Assertions.assertArrayEquals(new String[]{"1", null, ""}, s3); + + // test simple key form: val1 + String[] s4 = KeyGenUtils.extractRecordKeys("1"); + Assertions.assertArrayEquals(new String[]{"1"}, s4); } }