当前位置: 首页 > 知识库问答 >
问题:

Apache Beam:将PCollection展平到PCollection

左丘恩
2023-03-14

假设我们有一些嵌套列表:

["a", "b"]
["c", "d"]

我们可以像这样轻松地在Stream API中进行翻盖映射:

Stream
        .of(List.of("a", "b"), List.of("c", "d"))
        .flatMap(List::stream)
        .forEach(System.out::println);

但是用“FlatMapElements”做这件事,真是一团糟:

Pipeline pipeline = Pipeline.create();
pipeline.apply(Create.of(List.of(List.of("a", "b"), List.of("c", "d"))))
        .apply(FlatMapElements.into(TypeDescriptor.of(String.class)).via(list -> list))
        .apply(ParDo.of(new SomeOutputFunction()));

我们能用平面贴图功能做得更好吗<一个简单的平面图工作不应该那么复杂,所以我想我遗漏了一些东西
我甚至无法替换。via(列表-

共有1个答案

谭毅然
2023-03-14

请参阅《Apache Beam编程指南》https://beam.apache.org/documentation/programming-guide/#flatten:

PCollectionList<String> collections = PCollectionList.of(pc1).and(pc2).and(pc3);

PCollection<String> merged = collections.apply(Flatten.<String>pCollections());
 类似资料:
  • 当我们将展平(spread)的props传入子组件时我们便引入了风险, 因为我们可能往HTML标签上添加了它并不支持的属性. 坏实践 下面这个例子会在DOM元素上增加一个该元素本身并不支持的属性flag. const Sample = () => (<Spread flag={true} className="content"/>); const Spread = (props) => (<div

  • 我有一个数据流工作,将单个文件分割成x个记录(表)。这些流在bigQuery没有问题。 不过,我发现没有办法在结果出来后执行管道中的另一个阶段。 举个例子 根据上述内容,我希望运行以下内容: 是有无论如何运行管道的另一个部分后,up到bigQuery或这是不可能的?提前感谢。

  • 问题内容: 在Gulp中,我用来从目录中选择每个字体文件: 但是,我希望所有这些字体文件并排放置在一个目录中,而不是从目录中重新创建整个树。 在Gulp,Gulp Utils和npm-glob API中查看并没有真正帮助我,尽管我可以很容易地跳过它。 最好的方法是什么? 问题答案: 我会用gulp-flatten: 至于如何在内部完成,请检查:https : //github.com/armed/

  • 给定一棵二叉树,将其展平为就地的链表。 例如,给定以下树: 被压扁的树应该是这样的: 我对其他解决方案很感兴趣,但我想问,为什么在运行代码时,输出只与输入树匹配。

  • 我正在使用Apache Beam GoSDK,很难以正确的格式按键分组/组合PCollection。 我在PCollection的字符串中每个键有多条记录,如下所示: 我想使用GroupByKey和CombinePerKey,这样我可以像这样聚合每个人的宠物: 如何转换PCollection 他们在这里提到了类似的内容,但没有包含聚合字符串值的代码。 我可以使用ParDo来获取字符串键和字符串值,

  • 我的输入是一个json列表,我希望有一个多元素pCollection。这是我的代码: 问题是,当列表由2个元素组成时,我只得到列表的第一个元素。 我如何做到这一点?