join和coGroup转换可以读取2个输入数据集并输出一个("Y" flux)(如果我错了请纠正我)
我想处理和更新2个数据集。为此,我计划使用2个coGroup
转换。
但是,出于性能考虑,这两个转换是否可以在一个("H"通量)中完成?
此外,随着数据集的更新,我想遍历它们。如果目前还不可能,你们计划在未来支持这种转变吗?
所有Flink DataSet操作符只支持一个输出,但是一个操作符的输出可以被后面的两个或多个操作符使用。
有两种方法可以解决你的问题:
- 使用单个CoGroup来计算两个输出的结果,并添加两个过滤器,过滤掉两个输出之一的记录。如果两个输出具有不同的数据类型,则需要计算类似
Tuple2<FirstType, SecondType>
的返回值。这个解决方案看起来像:
- 在分组键上对CoGroup输入进行分区和排序,并调用两个单独的CoGroup。每个CoGroup计算一个输出。通过在CoGroup之前对数据进行排序,可以重用分区和排序。重要的是,所有操作符必须使用相同的并行性! <>之前input1 -> PartitionHash -> SortPartition --/-> CoGroup1 -> Output1Xinput2 -> PartitionHash -> SortPartition -/--> CoGroup2 -> Output2之前
关于迭代,请查看Flink的迭代操作符