2017-02-10 3 views
0

Ich weiß, dass es möglich ist, zu Beginn zwei Abfragen mit PCollections, KVs und CoGbkResult zu erstellen, aber Sie müssen Ihre DatastoreIO.Reads außerhalb von ParDos/DoFns angeben. Ist es möglich, so etwas zu tun:Ist es möglich, eine andere DatastoreV1.Read in einem aktuell ausgeführten Pipeline zu schaffen?

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(); 

Antwort

0

Ja. Sie können jeden beliebigen Code setzen, die Sie in einem ParDo mögen und es wird mit allen möglichen Problemen ausgeführt werden. Beachten Sie jedoch, dass der Code in der verteilten Dataflow-Umgebung ausgeführt wird, sodass Sie den Status nicht teilen können, abhängig von der Bestellung usw.

+0

Können Sie ein Beispiel für die Abfrage der Datenbank innerhalb des ParDo bereitstellen? –

+0

Ich weiß nicht, was genau Sie mit der Abfrage tun möchten. Aber es ist einfach. Verwenden Sie einfach die Client-Bibliothek und rufen Sie die API auf. https://cloud.google.com/datastore/docs/datastore-api-tutorial –

+0

Habe hier einen Blick, wo ich die Natural Language API aus meinem 'ParDo' nennen. Es ist das gleiche Prinzip. https://shinesolutions.com/2016/12/20/analysing-stack-overflow-comment-sentiment-using-google-cloud-platform/ –

Verwandte Themen