我正在阅读带有2个分区并使用事件时间的Kafka主题的消息。这是我的代码:
crystal reports
我只能在将Kafka源并行度设置为1时获得输出。根据this thread,我猜这是因为来自多个分区的消息无序到达时间戳提取器。
所以我将stream.assignTimestampsAndWatermarks(new AscendingTimestampExtractor<Request>() {
@Override
public long extractAscendingTimestamp(Request req) {
return req.ts;
}
})
.windowAll(TumblingEventTimeWindows.of(Time.days(1)))
.apply((TimeWindow window, Iterable<Request> iterable, Collector<String> collector) -> {
collector.collect("Window: " + window.toString());
for (Request req : iterable) {
collector.collect(req.toString());
}
})
.print()
替换为AscendingTimestampExtractor
this documentation example(更高的maxOutOfOrderness延迟),以便处理无序事件,但我仍然可以&# 39;得到任何输出。那是为什么?
答案 0 :(得分:0)
检查事件时间戳是否正确。必须有13个长度才能在Flink Java Epoch中使用。
正确:1563743505673
不正确:1563743505