【问题标题】:Flink processing records in Process Time or in Event Time sporadicallyFlink 在 Process Time 或 Event Time 中偶尔处理记录
【发布时间】:2021-05-24 23:32:46
【问题描述】:

我有以下代码:

stream1
.connect(stream2)
.flatMap(new MyRichCoFlatMapFunction())
.assignTimestampsAndWatermarks(
                        WatermarkStrategy
                        .<Item>forBoundedOutOfOrderness(Duration.ofSeconds(5))
                        .withTimestampAssigner((event, timestamp) -> event.getTimestamp())
                )
.keyBy(item -> item.getKey()).window(new MyWindowAssigner())
.trigger(MyEventTimeTrigger())
.process(new MyProcessWindowFunction());

另外,我设置

env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime);

但是,在我的触发器中,我看到两个函数都带有断点

onProcessingTime() is being called

有时


onEventTime()

是什么原因?

【问题讨论】:

    标签: apache-flink flink-streaming


    【解决方案1】:

    原因是当你将EventTime设置为时间特征时,Flink仍然会触发处理时间触发器,触发处理时间定时器,通常它允许你在几个地方仍然使用ProcessingTime。

    这是正确的,并且在特定情况下可能非常方便,例如,如果您的输入源出现问题并且它没有产生任何输入,您仍然可以使用ProcessingTime 触发器作为安全开关以仍然关闭待处理窗户。

    请注意,如果您的代码编写正确,则不会导致任何问题。

    【讨论】:

      猜你喜欢
      • 2018-10-20
      • 2018-05-16
      • 1970-01-01
      • 2021-11-22
      • 2016-05-25
      • 1970-01-01
      • 2017-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多