From 71ac2c0d5e8bffdbb11f7789a7805575736049c1 Mon Sep 17 00:00:00 2001 From: Gurudatt Kulkarni Date: Tue, 5 Nov 2019 17:52:14 +0530 Subject: [PATCH] [HUDI-324] TimestampKeyGenerator should support milliseconds (#993) --- .../hudi/utilities/keygen/TimestampBasedKeyGenerator.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hudi-utilities/src/main/java/org/apache/hudi/utilities/keygen/TimestampBasedKeyGenerator.java b/hudi-utilities/src/main/java/org/apache/hudi/utilities/keygen/TimestampBasedKeyGenerator.java index bb6802fa9..5d0bae2bd 100644 --- a/hudi-utilities/src/main/java/org/apache/hudi/utilities/keygen/TimestampBasedKeyGenerator.java +++ b/hudi-utilities/src/main/java/org/apache/hudi/utilities/keygen/TimestampBasedKeyGenerator.java @@ -39,7 +39,7 @@ import org.apache.hudi.utilities.exception.HoodieDeltaStreamerException; public class TimestampBasedKeyGenerator extends SimpleKeyGenerator { enum TimestampType implements Serializable { - UNIX_TIMESTAMP, DATE_STRING, MIXED + UNIX_TIMESTAMP, DATE_STRING, MIXED, EPOCHMILLISECONDS } private final TimestampType timestampType; @@ -97,9 +97,10 @@ public class TimestampBasedKeyGenerator extends SimpleKeyGenerator { throw new HoodieNotSupportedException( "Unexpected type for partition field: " + partitionVal.getClass().getName()); } + Date timestamp = this.timestampType == TimestampType.EPOCHMILLISECONDS ? new Date(unixTime) : new Date(unixTime * 1000); return new HoodieKey(DataSourceUtils.getNestedFieldValAsString(record, recordKeyField), - partitionPathFormat.format(new Date(unixTime * 1000))); + partitionPathFormat.format(timestamp)); } catch (ParseException pe) { throw new HoodieDeltaStreamerException("Unable to parse input partition field :" + partitionVal, pe); }