Google cloud dataflow 将google数据流管道的结果写入多个接收器

Google cloud dataflow 将google数据流管道的结果写入多个接收器,google-cloud-dataflow,Google Cloud Dataflow,我想将Google数据流管道结果写入多个接收器 比如,我想使用TextIO将结果写入Google云存储,并将结果写入BigQuery中的表中。如何实现这一点?云数据流管道的结构是DAG(有向无环图),允许对同一个PCollection应用多个转换-写入转换也不例外。您可以对结果的PCollection应用多个写入转换,例如: PCollection<Foo> results = p.apply(TextIO.Read.named("ReadFromGCS").from("gs://.

我想将Google数据流管道结果写入多个接收器


比如,我想使用TextIO将结果写入Google云存储,并将结果写入BigQuery中的表中。如何实现这一点?

云数据流管道的结构是DAG(有向无环图),允许对同一个PCollection应用多个转换-写入转换也不例外。您可以对结果的PCollection应用多个写入转换,例如:

PCollection<Foo> results = p.apply(TextIO.Read.named("ReadFromGCS").from("gs://..."))
                         .apply(...the rest of your pipeline...);
results.apply(TextIO.Write.named("WriteToGCS").to("gs://..."));
results.apply(BigQueryIO.Write.named("WriteToBigQuery").to(...)...);
PCollection results=p.apply(TextIO.Read.named(“ReadFromGCS”).from(“gs://…”)
.申请(…剩余的管道…);
结果。应用(TextIO.Write.named(“WriteToGCS”)。到(“gs://…”);
results.apply(BigQueryIO.Write.named(“WriteToBigQuery”)。到(…);

这将并行执行两个转换。如果我们想按顺序做呢?对于ex,首先写入PUBSUB,然后写入SQL。对于这一点,请参阅Wait.on()转换。Wait.on()在我写入PUBSUB时实际上不起作用,它给了我一个PDone,我无法对其应用任何其他转换,我想将推送到PUBSUB的消息记录在SQL中。是的,目前并非所有转换都处于等待状态。不幸的是,在这些情况下,除了手工编写自己的DoFn之外,没有简单的解决方法。您是否有任何关于编写自己的DoFn的参考资料?