是否可以在当前正在执行的管道中创建另一个DatastoreV1.Read?

时间:2017-02-10 21:55:43

标签: google-cloud-dataflow

我知道可以使用PCollections,KV和CoGbkResult在开头创建两个查询,但是您必须在ParDos / DoFns之外指定DatastoreIO.Reads。有可能做这样的事情:

    Pipeline pipeline = Pipeline.create(options);

    PubsubIO.Read.Bound<String> pubsub = PubsubIO.Read.named("ReadFromPubsub")
            .subscription(subscriptionPath);

    pipeline.apply(pubsub).apply("Query DB with UserId" , ParDo.of(new DoFn<String, String>() {
        @Override
        public void processElement(ProcessContext c) throws Exception {
            String userId = c.element().toString();

            //Query database using userId....
        }
    }));

    pipeline.run();

1 个答案:

答案 0 :(得分:0)

是。您可以在ParDo中放置任意您喜欢的任意代码,并且可以执行任何问题。但是,请记住,您的代码将在Dataflow分布式环境中运行,因此您无法共享状态,依赖于排序等。