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 fa3c212ee0804..d28263574b763 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 @@ -74,7 +74,7 @@ public static String getPartitionPathFromGenericRecord(GenericRecord genericReco public static String[] extractRecordKeys(String recordKey) { String[] fieldKV = recordKey.split(","); return Arrays.stream(fieldKV).map(kv -> { - final String[] kvArray = kv.split(":"); + final String[] kvArray = kv.split(":", 2); if (kvArray.length == 1) { return kvArray[0]; } else if (kvArray[1].equals(NULL_RECORDKEY_PLACEHOLDER)) { 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 82ea37e90b220..43f5952e4927c 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 @@ -27,16 +27,19 @@ public class TestKeyGenUtils { public void testExtractRecordKeys() { // test complex key form: field1:val1,field2:val2,... String[] s1 = KeyGenUtils.extractRecordKeys("id:1"); - Assertions.assertArrayEquals(new String[]{"1"}, s1); + Assertions.assertArrayEquals(new String[] {"1"}, s1); String[] s2 = KeyGenUtils.extractRecordKeys("id:1,id:2"); - Assertions.assertArrayEquals(new String[]{"1", "2"}, s2); + Assertions.assertArrayEquals(new String[] {"1", "2"}, s2); String[] s3 = KeyGenUtils.extractRecordKeys("id:1,id2:__null__,id3:__empty__"); - Assertions.assertArrayEquals(new String[]{"1", null, ""}, s3); + Assertions.assertArrayEquals(new String[] {"1", null, ""}, s3); + + String[] s4 = KeyGenUtils.extractRecordKeys("id:ab:cd,id2:ef"); + Assertions.assertArrayEquals(new String[] {"ab:cd", "ef"}, s4); // test simple key form: val1 - String[] s4 = KeyGenUtils.extractRecordKeys("1"); - Assertions.assertArrayEquals(new String[]{"1"}, s4); + String[] s5 = KeyGenUtils.extractRecordKeys("1"); + Assertions.assertArrayEquals(new String[] {"1"}, s5); } }