2016-06-24 16 views
0

Ich muss Daten von Google Datastore und Google BigTable beifügen, um einen Bericht zu erstellen. Ich muss diese Operation jede Minute ausführen. Kann Google Cloud Dataflow erreicht werden (vorausgesetzt, die Verarbeitung selbst sollte nicht lange dauern und/oder in unabhängigen parallelen Jobs aufgeteilt werden)?Periodischen Datenfluss-Job ausführen

  1. Sollte ich Endlosschleife innerhalb der „main“ zu schaffen und die gleiche Pipeline immer wieder ausgeführt wird?

  2. Wenn die meiste Zeit in einem solchen Szenario durch das Aufrufen der VMs belegt wird, ist es dann möglich, den Dataflow anzuweisen, stattdessen Kunden-VMs zu verwenden?

Danke,

+0

Wie viele Daten würden Sie hinzufügen und wo würden Sie die Ergebnisse speichern? –

Antwort

1

Wenn Sie erwarten, dass Ihr Job klein genug ist, in 60 Sekunden abgeschlossen Sie innerhalb eines DoFn in einem Streaming Job des Datenspeichers und BigTable-APIs aus betrachten konnte. Ihre Pipeline könnte etwa so aussehen:

PCollection<Long> impulse = p.apply( CountingInput.unbounded().withRate(1, Duration.standardMinutes(1))) PCollection<A> input1 = impulse.apply(ParDo.of(readFromDatastore)); PCollection<B> input2 = impulse.apply(ParDo.of(readFromBigTable)); ...

Dies erzeugt einen einzigen Eingang jede Minute, für immer. Wenn sie als Streaming-Pipeline ausgeführt werden, werden die VMs weiterhin ausgeführt.

Nach dem Lesen von beiden APIs können Sie Fenster/bei Bedarf beitreten.

+0

Ich konnte die Methode UnboundCountingInput.withRate nicht finden (https://cloud.google.com/dataflow/java-sdk/JavaDoc/com/google/cloud/dataflow/sdk/io/CountingInput.UnboundedCountingInput#class-countinginputunboundedcountingingput). Was ist der einfachste Weg, um eine solche Funktion zu implementieren? Muss ich die UnboundedSource-Klasse erweitern oder gibt es einen einfacheren Weg? –

+0

Die Methode 'withRate' wurde zu Apache Beam hinzugefügt. Sie sollten in der Lage sein, Ihre Implementierung darauf zu übertragen. https://github.com/apache/incubator-beam/blob/master/sdks/java/core/src/main/java/org/apache/beam/sdk/io/CountingInput.java#L195 –

+0

Und es wird in dieser PR zurückportiert: https://github.com/GoogleCloudPlatform/DataflowJavaSDK/pull/319#issuecomment-229185613 –

Verwandte Themen