如何定义应该在一天中的特定时间提前的时间 window?

How to define a time window which should advance at specific time of the day?

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

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

根据文档,翻滚时间 windows 似乎是一个不错的选择:

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

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

翻滚 windows 与纪元对齐,这意味着 UTC 时区中的 Unix 时间戳,即 24 小时 window 从 UTC 午夜开始到午夜结束,如文档中所述: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