在 flink 中使用 tumbling Windows 时,我可以为每个键设置不同的时区偏移量吗?

Can I set different timezone offset for every key when using tumbling Windows in flink?

如 flink 文档中的示例:

input
.keyBy(<key selector>)
.window(TumblingEventTimeWindows.of(Time.days(1), Time.hours(-8)))
.<windowed transformation>(<window function>);

我想为每个键设置不同的偏移量,因为它有不同的时区。 我该怎么做?

如果我没理解错的话,您似乎应该使用地图将所有时间戳转换为 UTC。您需要在时间戳提取器/水印生成器之前执行此操作。

换句话说,移动时间戳,这样您就不需要按键改变偏移量。

您可以实施自定义 WindowAssigner,在将记录分配给 windows 时考虑时区。如果你想走那条路,你可能想分叉 TumblingEventTimeWindows 分配器并用自定义逻辑扩展它来处理时区。

您还可以使用此方法按时区创建 windows。