如何在一次转换中处理和输出两个数据集



join和coGroup转换可以读取2个输入数据集并输出一个("Y" flux)(如果我错了请纠正我)

我想处理和更新2个数据集。为此,我计划使用2个coGroup转换。

但是,出于性能考虑,这两个转换是否可以在一个("H"通量)中完成?

此外,随着数据集的更新,我想遍历它们。如果目前还不可能,你们计划在未来支持这种转变吗?

所有Flink DataSet操作符只支持一个输出,但是一个操作符的输出可以被后面的两个或多个操作符使用。

有两种方法可以解决你的问题:

  1. 使用单个CoGroup来计算两个输出的结果,并添加两个过滤器,过滤掉两个输出之一的记录。如果两个输出具有不同的数据类型,则需要计算类似Tuple2<FirstType, SecondType>的返回值。这个解决方案看起来像:
<>之前input1——/——> Filter_output1CoGroupinput2——/--> Filter_output2之前
  • 在分组键上对CoGroup输入进行分区和排序,并调用两个单独的CoGroup。每个CoGroup计算一个输出。通过在CoGroup之前对数据进行排序,可以重用分区和排序。重要的是,所有操作符必须使用相同的并行性!
  • <>之前input1 -> PartitionHash -> SortPartition --/-> CoGroup1 -> Output1Xinput2 -> PartitionHash -> SortPartition -/--> CoGroup2 -> Output2之前

    关于迭代,请查看Flink的迭代操作符

    相关内容

    • 没有找到相关文章

    最新更新