如何在 Dataflow 中执行联合?

How do I perform a Union in Dataflow?

我正在尝试在 Dataflow 中执行合并操作。是否有在 Dataflow 中合并两个 PCollections 的示例代码?

一个简单的方法是像这样将 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());

希望对您有所帮助。