Apache Flink中的JoinFunctionCoGroupFunction有什么区别?语义和执行方式有何不同?

最佳答案

Join和CoGroup转换都将关键字段上的两个输入联接在一起。不同之处在于用户函数的调用方式:

  • Join转换使用来自两个输入的匹配记录对来调用JoinFunction,这些记录具有相同的键字段值。此行为与相等内部联接非常相似。
  • CoGroup转换使用两个迭代器的迭代器调用CoGroupFunction,这两个输入的所有记录的键字段值都相同。如果输入没有某个键值的记录,则传递一个空的迭代器。除其他事项外,CoGroup转换还可用于内部和外部相等联接。因此,它比Join转换更通用。

  • 查看Join和CoGroup的执行策略,可以使用基于排序和哈希的连接策略执行Join,而因为CoGroup始终使用基于排序的策略执行。因此,联接通常比联合组更有效,如果可能,应该首选联接。

    关于apache-flink - Apache Flink的JoinFunction和CoGroupFunction有何区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36471523/

    10-16 11:08