gpt4 book ai didi

apache-flink - 弗林克 : How to process and output two datasets in a single transformation?

转载 作者:行者123 更新时间:2023-12-03 17:07:39 26 4
gpt4 key购买 nike

join 和 coGroup 转换可以读取 2 个输入数据集并输出一个(“Y”通量)(如果我错了,请纠正我)。

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

但是,出于性能目的,这两种转换是否可以在一个(“H”通量)中完成?

此外,随着数据集的更新,我想对它们进行迭代。如果目前无法实现,您是否计划在 future 支持这种转型?

最佳答案

所有 Flink DataSet 算子都只支持单个输出,但是一个算子的输出可以被后面的两个或多个算子消费。

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

  • 使用单个 CoGroup 计算两个输出的结果,并添加两个过滤器,过滤掉两个输出之一的记录。如果两个输出具有不同的数据类型,则需要计算类似 Tuple2<FirstType, SecondType> 的返回值。 .这个解决方案看起来像:

  • input1--\/--> Filter_output1
    集团
    input2--/\--> Filter_output2
  • 根据分组键对两个 CoGroup 输入进行分区和排序,并调用两个单独的 CoGroup。每个 CoGroup 计算一个输出。通过在 CoGroup 之前对数据进行排序,可以重复使用分区和排序。重要的是,所有运算符必须使用相同的并行性!

  • input1 --> PartitionHash --> SortPartition -\-/-> CoGroup1 --> Output1
    X
    input2 --> PartitionHash --> SortPartition -/-\-> CoGroup2 --> Output2

    关于迭代,看看 Flink 的 iteration operators .

    关于apache-flink - 弗林克 : How to process and output two datasets in a single transformation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32067369/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com