apache-kafka - 如何定义应在一天中的特定时间提前的时间窗口?

标签 apache-kafka apache-kafka-streams

我正在尝试使用 Kafka 流来统计特定时间范围内(24 小时)的唯一身份访问者,例如,

2020-07-03 22:00:00 ~ 2020-07-04 21:59:59(24小时),时间窗口应该自动提前到2020-07-04 22:00:00。

根据文档,Tumbling time windows 似乎是一个不错的选择:

Duration windowSizeDuration = Duration.ofDays(1);
TimeWindows timeWindows = TimeWindows.of(windowSizeDuration);

但是我找不到任何可用的流 api 来限制时间范围,有人可以给我一些建议吗?谢谢

最佳答案

翻滚窗口与纪元对齐,这意味着 UTC 时区中的 Unix 时间戳,即 24 小时窗口从午夜开始到午夜结束,如文档中所述:https://kafka.apache.org/25/documentation/streams/developer-guide/dsl-api.html#tumbling-time-windows

您可以使用自定义时间戳提取器或使用 transform()(例如,context.forward(..., To.all ().withTimestamp(..)).

或者您自己定义一个自定义的TimeWindow。您可以在 Github 上找到示例:https://github.com/confluentinc/kafka-streams-examples/blob/5.5.0-post/src/test/java/io/confluent/examples/streams/window/DailyTimeWindows.java

关于apache-kafka - 如何定义应在一天中的特定时间提前的时间窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62727082/

相关文章:

apache-kafka - Kafka Stream API 与消费者 API

java - 启用 SSL 的 kafka 配置 : Error : no suitable method found in creating map/configuration

java - 如何获取消费者组的最后消费偏移量?

apache-kafka - kafka 在重启时丢失所有主题

apache-kafka - Kafka Tool 可以显示实际字符串而不是常规的十六进制格式

java - Kafka - TimestampExtractor 的问题

java - 应用程序重新启动时,Kafka 最后偏移量会增加

apache-spark - 群组成员支持的协议(protocol)与现有成员的协议(protocol)不兼容

apache-kafka - Kafka Streams - 所有实例本地存储指向同一主题

java - 使用kafka lib反序列化PRIMITIVE AVRO KEY