Apache Flink的JoinFunction和CoGroupFunction有何不同?

Jar*_*hen 9 apache-flink

Apache Flink中a JoinFunction和a有什么区别CoGroupFunction?语义和执行有何不同?

Fab*_*ske 20

Join和CoGroup转换都在关键字段上连接两个输入.不同之处在于如何调用用户函数:

  • 在加入改造调用JoinFunction对从两个输入匹配的记录中有键字段的值相同.此行为与相等的内部联接非常相似.
  • CoGroup转换在CoGroupFunction具有相同键值字段的两个输入的所有记录上调用with 迭代器.如果输入没有某个键值的记录,则传递空迭代器.除了别的以外,CoGroup转换可以用于内部和外部的相等连接.因此它比Join变换更通用.

查看Join和CoGroup的执行策略,可以使用基于排序和散列的连接策略来执行Join,其中CoGroup始终使用基于排序的策略执行.因此,连接通常比组合更有效,并且如果可能的话应该是首选.