【发布时间】:2018-02-09 13:47:02
【问题描述】:
我正在努力解决有关 flink 的 kafka 消费者连接器的事件时间的问题。 引用Flink doc
自 Apache Kafka 0.10+ 起,Kafka 的消息可以携带时间戳,表示事件发生的时间(参见 Apache Flink 中的“事件时间”)或消息写入 Kafka 代理的时间。
如果 Flink 中的时间特征设置为 TimeCharacteristic.EventTime (StreamExecutionEnvironment.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)),FlinkKafkaConsumer010 将发出带有时间戳的记录。
Kafka 消费者不会发出水印。
想到一些问题和问题:
-
我如何知道所用的时间戳是它发生的时间还是写入 Kafka 代理的时间?
-
如果消费者不发出水印并且设置了TimeCharacteristic.EventTime,是否意味着延迟几天的消息仍然可以进入并被处理?
-
主流程图不包含窗口函数,基本如下:source(kafka)->filter->processFunction->Sink。这是否意味着事件在被 Kafka 连接器使用时被触发?
-
我目前使用 Kafka 连接器 0.10.0,设置 TimeCharacteristic.EventTime 并使用一个 processFunction,预计每 X 分钟进行一次状态清理。 但是我收到了一个奇怪的情况,其中 OnTimerContext 包含从 0 开始的时间戳,并在我启动 flink 程序时一直增长到当前时间戳,这很奇怪,这是一个错误吗?
提前感谢所有帮助者!
【问题讨论】:
标签: apache-flink flink-streaming