在DataStoreIO.Write

时间:2017-09-15 12:16:33

标签: google-cloud-dataflow apache-beam apache-beam-io

我正在使用Apache Beam Java SDK创建Google数据流管道。我在那里进行了一些转换,最后我创建了一个实体集合(PCollection< Entity>)。我需要将其写入Google DataStore,然后在编写完所有实体后执行另一次转换。 (例如通过PubSub消息向多个订户广播已保存对象的ID)。

现在,存储PCollection的方法是: entities.DatastoreIO.v1()写()withProjectId(" ABC&#34)。

这会返回一个PDone对象,我不确定如何在Write()完成后链接另一个转换。由于DatastoreIO.write()调用不返回PCollection,我无法进一步管道。我有两个问题:

  1. 如何获取写入数据存储区的对象的ID?

  2. 如何附加另一个将在保存所有实体后执行的转换?

1 个答案:

答案 0 :(得分:2)

我们没有一个好方法可以做这些事情(返回写入的数据存储区实体的ID,或者等到实体已经写好),尽管这远远不是第一个类似的请求(人们已经要求这样做了)比如BigQuery,我们正在考虑它。

现在你唯一的选择是等到整个管道完成,例如通过pipeline.run().waitUntilFinish(),然后在主程序中执行您想要的操作(例如,您可以运行另一个管道)。