代码之家  ›  专栏  ›  技术社区  ›  Allan Veloso Vineeth Reddy

如何使用Apache Beam模型导航树

  •  0
  • Allan Veloso Vineeth Reddy  · 技术社区  · 7 年前

    在一个 ParDo 我执行 DoFn PCollection Category

    .apply("Read Category", ParDo.of(new DoFn<String, Category>(){});
    

    马上 帕尔多 类别 对象,读取其子对象属性并返回其子对象ID。

    .apply("Persist Category", ParDo.of(new DoFn<Category, String>(){});
    

    我想重复第一个 帕尔多 再次查看第二个返回的ID列表 帕尔多

    1 回复  |  直到 7 年前
        1
  •  1
  •   jkff    7 年前

    Apache Beam目前不提供任何用于迭代并行处理的原语。您可以采用一些变通方法,例如,其中一些方法列在 this answer

    另一种选择是编写一个简单的Java函数,该函数将遍历特定顶级ID的树(递归获取从给定ID开始的类别和子级),并使用ParDo并行应用该函数,但显然,该函数中不会存在分布式并行。

    您还可以首先在管道中部分“展开”迭代,以在树的前几个级别上获得一组分布式并行性-例如,使用一系列第一个和第二个ParDo构建管道,然后应用第三个ParDo,该ParDo应用迭代Java函数来遍历其余级别。

    请注意,如果您在数据流或任何其他支持融合优化的运行程序上执行,则很可能需要使用以下技巧之一: preventing fusion