Apache Flink 的 JoinFunction 和 CoGroupFunction 有何不同?
How do Apache Flink's JoinFunction and CoGroupFunction differ?
Apache Flink 中的 JoinFunction
和 CoGroupFunction
有什么区别?语义和执行有何不同?
Join 和 CoGroup 转换都在关键字段上连接两个输入。不同之处在于调用用户函数的方式:
- 连接转换调用
JoinFunction
,其中 对来自两个输入 的匹配记录对具有相同的键字段值。此行为与相等内部联接非常相似。
- CoGroup 转换调用
CoGroupFunction
和 迭代器,遍历两个输入 的所有记录,这些记录的键字段具有相同的值。如果输入没有某个键值的记录,则会传递一个空迭代器。 CoGroup 转换可用于内部和外部相等连接等。因此它比 Join 转换更通用。
查看 Join 和 CoGroup 的执行策略,Join 可以使用基于排序和散列的连接策略执行,而 CoGroup 始终使用基于排序的策略执行。因此,连接通常比协同组更有效,如果可能应该首选。
Apache Flink 中的 JoinFunction
和 CoGroupFunction
有什么区别?语义和执行有何不同?
Join 和 CoGroup 转换都在关键字段上连接两个输入。不同之处在于调用用户函数的方式:
- 连接转换调用
JoinFunction
,其中 对来自两个输入 的匹配记录对具有相同的键字段值。此行为与相等内部联接非常相似。 - CoGroup 转换调用
CoGroupFunction
和 迭代器,遍历两个输入 的所有记录,这些记录的键字段具有相同的值。如果输入没有某个键值的记录,则会传递一个空迭代器。 CoGroup 转换可用于内部和外部相等连接等。因此它比 Join 转换更通用。
查看 Join 和 CoGroup 的执行策略,Join 可以使用基于排序和散列的连接策略执行,而 CoGroup 始终使用基于排序的策略执行。因此,连接通常比协同组更有效,如果可能应该首选。