我们正计划从加缪迁移到Gobblin。在Camus中,我们使用了下面提到的配置:
etl.partitioner.class=com.linkedin.camus.etl.kafka.partitioner.TimeBasedPartitioner
etl.destination.path.topic.sub.dirformat=YYYY/MM/dd/HH/mm
etl.output.file.time.partition.mins=30writer.file.path.type=tablename
writer.partition.level=minute (other options: daily,hourly..)
writer.partition.pattern=YYYY/MM/dd/HH/mm有没有其他配置可以用来实现这一点?
发布于 2018-07-19 23:10:50
通过在自定义WriterPartitioner中实现partitionerMethod,获得了一个解决方法:
在分区程序中获取记录级别的时间戳时,我们只需要使用下面提到的方法发送经过处理的时间戳。
public static long getPartition(long timeGranularityMs, long timestamp, DateTimeZone outputDateTimeZone) {
long adjustedTimeStamp = outputDateTimeZone.convertUTCToLocal(timestamp);
long partitionedTime = (adjustedTimeStamp / timeGranularityMs) * timeGranularityMs;
return outputDateTimeZone.convertLocalToUTC(partitionedTime, false);
}现在,分区是以所需的时间粒度生成的。
https://stackoverflow.com/questions/51421067
复制相似问题