2015-04-14 7 views

risposta

3

Sì, è possibile, è necessario utilizzare l'esecuzione "Streaming" come indicato here.

Utilizzando Google Cloud Pub/Sub come sorgente di streaming è possibile utilizzarlo come "trigger" della pipeline.

Da App Engine è possibile eseguire l'azione "Pub" sull'hub Pub/Sub con lo REST API.

+0

grazie! Quando si utilizza l'esecuzione dello streaming, un'istanza di Compute Engine con il mio lavoro di flusso di dati dovrà essere attiva e funzionante 24 ore su 24, 7 giorni su 7, giusto? – deemson

+1

Se si utilizza "l'esecuzione del cloud", penso che avvenga e interrompa le istanze quando è necessario :) – aqquadro

0

Potrebbe esserci un modo per inviare il processo Dataflow da App Engine ma questo non è qualcosa che è supportato attivamente come suggerito dalla mancanza di documenti. L'ambiente runtime di APP Engine rende più difficile eseguire alcune delle operazioni richieste, ad es. per ottenere credenziali, per inviare lavori Dataflow.

+0

grazie per la risposta! Non capivo cosa intendessi per "non è qualcosa che è supportato attivamente". È supportato, ma male? Oppure non è supportato affatto usando "pulito e suggerito in modo ufficiale"? – deemson

+0

Intendo che potrebbe essere possibile ma non è supportato e non posso garantire che funzionerà. –

0

Un modo sarebbe effettivamente utilizzare Pub/Sub da App Engine per consentire a Cloud Dataflow di sapere quando sono disponibili nuovi dati. Il lavoro di Cloud Dataflow dovrebbe quindi essere eseguito continuamente e App Engine fornirebbe i dati per l'elaborazione.

Un approccio diverso sarebbe quello di aggiungere il codice che imposta la pipeline cloud Dataflow ad una classe in App Engine (tra cui il flusso di dati SDK al progetto GAE) e impostare le opzioni di posti di lavoro a livello di programmazione come spiegato qui:

https://cloud.google.com/dataflow/pipelines/specifying-exec-params

Assicurati di impostare l'opzione "runner" su DataflowPipelineRunner, in modo che venga eseguita in modo asincrono su Google Cloud Platform. Poiché il conduttore di pipeline (che esegue effettivamente la pipeline) non deve essere uguale al codice che lo avvia, questo codice (fino a pipeline.run()) potrebbe trovarsi in App Engine.

È quindi possibile aggiungere un endpoint o servlet a GAE che, quando chiamato, esegue il codice che imposta la pipeline.

Per pianificare ancora di più, si potrebbe avere un job di cron in GAE che chiama l'endpoint che avvia la pipeline ...

+0

Ciao Gavin, il nostro backend è scritto in Python e speravamo di utilizzare un endpoint per attivare i nostri lavori Dataflow. Utilizzare la seconda opzione che si presenta è la migliore se rendiamo la nostra pipeline un modello di flusso di dati? Questo potrebbe essere il mio malinteso, ma se avessi tutta l'installazione della pipeline, incluso pipeline.run() in App Engine, funzionerebbe ancora in modo asincrono su Google Cloud Platform e non scadrà in App Engine? Grazie –