Apache Flink 的 JoinFunction 和 CoGroupFunction 有何不同?



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

接和 CoGroup 转换都联接关键字段上的两个输入。区别在于用户函数的调用方式:

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

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

相关内容

  • 没有找到相关文章

最新更新