Apache Flink:将事件时间与多个Kafka分区一起使用时无输出

时间:2016-07-26 07:04:42

标签: apache-kafka apache-flink flink-streaming

我正在阅读带有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;得到任何输出。那是为什么?

1 个答案:

答案 0 :(得分:0)

检查事件时间戳是否正确。必须有13个长度才能在Flink Java Epoch中使用。

正确:1563743505673

不正确:1563743505

参考号:https://ci.apache.org/projects/flink/flink-docs-stable/dev/event_timestamps_watermarks.html#assigning-timestamps