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

Google cloud dataflow 是否可以在当前正在执行的管道中创建另一个DatastoreV1.Read?,google-cloud-dataflow,Google Cloud Dataflow,我知道可以在开始时使用PCollections、KVs和CoGbkResult创建两个查询,但必须在ParDos/DoFns之外指定DatastoreIO.Reads。是否可以这样做: Pipeline pipeline = Pipeline.create(options); PubsubIO.Read.Bound<String> pubsub = PubsubIO.Read.named("ReadFromPubsub") .subscrip

我知道可以在开始时使用PCollections、KVs和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();
Pipeline-Pipeline=Pipeline.create(选项);
PubsubIO.Read.Bound pubsub=PubsubIO.Read.named(“ReadFromPubsub”)
.subscription(subscriptionPath);
apply(pubsub).apply(“使用UserId查询数据库”,ParDo.of(newdofn()){
@凌驾
public void processElement(ProcessContext c)引发异常{
字符串userId=c.element().toString();
//使用用户ID查询数据库。。。。
}
}));
pipeline.run();

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

您可以提供一个从ParDo内部查询数据库的示例吗?我不知道您想对查询做什么。但这是直截了当的。只需使用客户机库并调用API。看看这里,我从我的
ParDo
中调用了自然语言API。这是同样的原则。