簡體   English   中英

如何處理卡夫卡流中的不同時區?

[英]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())

功能請求票證: https : //issues.apache.org/jira/browse/KAFKA-7911

因此,為了解決此問題,我創建了自定義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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM