[英]How to Handle Different Timezone in Kafka Streams?
因此,我正在評估Kafka Streams,以及如何做才能查看它是否適合我的用例,因為我需要每小時,每天,每天15分鍾匯總傳感器數據,並發現它具有窗口功能,因此很有用。 因為我可以通過在KGroupedStream
上應用windowedBy()
來創建窗口,但問題是窗口是在UTC中創建的,我希望按其原始時區而不是UTC時區對我的數據進行分組,因為這會阻礙聚合,因此任何人都可以幫助我這個。
您可以使用自定義的TimestampExtractor
“移動” TimestampExtractor
-在將結果寫回到輸出主題之前,可以使用Transformer
並通過context.forward(key, value, To.all().withTimestamps())
”“移動”時間戳。 context.forward(key, value, To.all().withTimestamps())
。
因此,為了解決此問題,我創建了自定義TimestampExtractor
並使用它來更改流窗口創建時間以記錄有效負載中的時間,如下所示。
public class RecordTimeStampExtractor implements TimestampExtractor {
@Override
public long extract(ConsumerRecord<Object, Object> record, long previousTimestamp) {
JsonObject data = (JsonObject) new JsonParser().parse(record.value().toString());
Timestamp recordTimestamp = Timestamp.valueOf(data.get(Constant.SLOT).getAsString());
return recordTimestamp.getTime();
}
}
因此,現在我從昨天起就是IST 05:30,已經在我的本地時區進行了測試,並且它的正常工作以及kafka流正在基於記錄時間戳創建窗口。 還將與其他時區進行測試並更新答案
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.