【问题标题】:Flink Kafka connector 0.10.0 Event time Clarification and ProcessFunction ClarificationFlink Kafka connector 0.10.0 事件时间说明和 ProcessFunction 说明
【发布时间】: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 消费者不会发出水印。

想到一些问题和问题:

  1. 我如何知道所用的时间戳是它发生的时间还是写入 Kafka 代理的时间?

  2. 如果消费者不发出水印并且设置了TimeCharacteristic.EventTime,是否意味着延迟几天的消息仍然可以进入并被处理?

  3. 主流程图不包含窗口函数,基本如下:source(kafka)->filter->processFunction->Sink。这是否意味着事件在被 Kafka 连接器使用时被触发?

  4. 我目前使用 Kafka 连接器 0.10.0,设置 TimeCharacteristic.EventTime 并使用一个 processFunction,预计每 X 分钟进行一次状态清理。 但是我收到了一个奇怪的情况,其中 OnTimerContext 包含从 0 开始的时间戳,并在我启动 flink 程序时一直增长到当前时间戳,这很奇怪,这是一个错误吗?

提前感谢所有帮助者!

【问题讨论】:

    标签: apache-flink flink-streaming


    【解决方案1】:
    1. 这取决于创建这些事件的 Kafka 生产者的配置。 message.timestamp.type 属性应设置为 CreateTime 或 LogAppendTime。
    2. 您的 flink 应用程序负责创建水印; kafka 消费者会处理时间戳,但不会处理水印。不管事件有多晚,它仍然会进入您的管道。
    3. 是的。
    4. 我不清楚这有什么奇怪的部分。

    【讨论】:

      猜你喜欢
      • 2018-11-03
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 1970-01-01
      • 1970-01-01
      • 2018-01-10
      • 2014-08-29
      相关资源
      最近更新 更多