代码之家  ›  专栏  ›  技术社区  ›  Brutal_JL

flink ReduceFunction的默认触发器是什么?

  •  0
  • Brutal_JL  · 技术社区  · 6 年前

    WindowFunction的触发器和ReduceFunction的触发器有什么区别?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Fabian Hueske    6 年前

    不存在“ReduceFunction触发器”或“WindowFunction触发器”,因为触发器和函数是正交的。在Flink中,窗口操作至少由三部分组成:

    • WindowAssigner :窗口分配程序决定将其分配到的每个记录的窗口。
    • Function :窗口的功能处理分配给窗口的记录。函数可以是 ReduceFunction ,则, AggregateFunction ,则, WindowFunction ProcessWindowFunction 还原函数 聚合函数 可以在收到所有记录之前立即应用。这是有益的,因为这样可以显著减少窗口状态下要存储的数据量。 WindowFunction(窗口函数) ProcessWindowFunction 处理窗口收集的所有记录。也可以组合渴望函数( 还原函数 ,则, )和全窗口功能( WindowFunction(窗口函数) ,则, ProcessFunction )。在这种情况下,将急切地聚合记录,并最终将急切的聚合结果提供给完整的窗口函数。
    • Trigger :A 触发 决定何时从窗口操作发出结果和/或放弃窗口操作的状态。

    A. 还原函数 总是在将新记录添加到窗口时立即应用。当 触发 窗户着火了。

        2
  •  0
  •   Alex    6 年前

    触发器仅适用于windows。ReduceFunction不需要触发器,它是一个转换操作,调用 processElement() 在每个新元素。

    简而言之:

    ReduceFunction 每个元素上的触发器(类似于 onElement() 窗口触发器)。

    WindowFunction 按时触发(默认情况下)(事件、处理或摄取)。但它在这方面很灵活,并接受自定义触发器。

    有关触发器的详细信息:

    https://ci.apache.org/projects/flink/flink-docs-master/dev/stream/operators/windows.html#triggers

    默认减少实施:

    https://github.com/apache/flink/blob/master/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/operators/StreamGroupedReduce.java