Google cloud dataflow 如何在数据流中执行联合?

Google cloud dataflow 如何在数据流中执行联合?,google-cloud-dataflow,Google Cloud Dataflow,我正在尝试在数据流中执行联合操作。是否有用于在数据流中合并两个PCollection的示例代码?一种简单的方法是将flatte()与RemoveDuplicates()组合起来,如下所示。根据您想要的是不相交并集还是集合论并集,RemovedUpplicates调用可以省略: PCollection<String> pc1 = ...; PCollection<String> pc2 = ...; PCollection<String> union = PCo

我正在尝试在数据流中执行联合操作。是否有用于在数据流中合并两个PCollection的示例代码?

一种简单的方法是将flatte()与RemoveDuplicates()组合起来,如下所示。根据您想要的是不相交并集还是集合论并集,RemovedUpplicates调用可以省略:

PCollection<String> pc1 = ...;
PCollection<String> pc2 = ...;
PCollection<String> union = PCollectionList.of(pc1).and(pc2)
  .apply(Flatten.<String>pCollections())
  .apply(RemoveDuplicates.<String>create());
PCollection pc1=。。。;
PCollection pc2=。。。;
PCollection union=PCollectionList.of(pc1)和(pc2)
.apply(展平.pCollections())
.apply(RemoveDuplicates.create());

如果您有两个以上的集合,一个方便的解决方案是填写PCollection列表,在此基础上创建PCollectionList,然后展开:

List<PCollection<TableRow>> tabs = new ArrayList<>();
/* ... fill tabs */
PCollectionList<TableRow> tabList = PCollectionList.of(tabs);
PCollection<TableRow> bigOne = tabList.apply(Flatten.<TableRow>create());
List tabs=new ArrayList();
/* ... 填充选项卡*/
PCollectionList tabList=PCollectionList.of(选项卡);
PCollection bigOne=tabList.apply(flatte.create());

希望这能有所帮助。

我想知道在展平之前添加另一个RemovedDuplicates是否是一个好主意,以防每个集合中也有重复的?i、 e.PCollectionList.of(pc1.apply(RemoveDuplicates))和(pc2.apply(RemoveDuplicates))-或者优化器会处理这个问题吗?我认为“flatte..create”应该是“flatte.create”@jkff当前优化器不会处理这个问题,所以你会得到两个洗牌而不是一个。@SamMcVeety看起来像“RemoveDuplicates”现在已更改为“独特”。我使用的是光束2.4