【发布时间】:2015-02-12 20:11:20
【问题描述】:
我正在尝试在 Dataflow 中执行联合操作。是否有在 Dataflow 中合并两个 PCollection 的示例代码?
【问题讨论】:
我正在尝试在 Dataflow 中执行联合操作。是否有在 Dataflow 中合并两个 PCollection 的示例代码?
【问题讨论】:
一个简单的方法是像这样将 Flatten() 与 RemoveDuplicates() 结合起来。根据您想要不相交联合还是集合论联合,可以省略 RemoveDuplicates 调用:
PCollection<String> pc1 = ...;
PCollection<String> pc2 = ...;
PCollection<String> union = PCollectionList.of(pc1).and(pc2)
.apply(Flatten.<String>pCollections())
.apply(RemoveDuplicates.<String>create());
【讨论】:
如果你有两个以上的集合,一个方便的解决方案是填充一个 PCollection 列表,基于它和 Flatten 创建一个 PCollectionList:
List<PCollection<TableRow>> tabs = new ArrayList<>();
/* ... fill tabs */
PCollectionList<TableRow> tabList = PCollectionList.of(tabs);
PCollection<TableRow> bigOne = tabList.apply(Flatten.<TableRow>create());
希望这会有所帮助。
【讨论】: