2017-08-11 1 views
0

Je suis nouveau dans google dataflow. J'ai 2 pipeline de flux de données pour exécuter 2 travail de différence. L'un est le processus ETL et le chargement vers Bigquery et un autre est lu à partir de Bigquery pour être agrégé pour le rapport. Je veux lancer ETL firt de pipeline et après qu'il soit terminé le pipeline de rapports se déroulera pour s'assurer que les données dans bigquery est la dernière mise à jour.Définir la priorité pour pipeline google dataflow

J'avais essayé de courir dans une ligne de pipe mais cela ne peut pas aider. Maintenant, je dois d'abord exécuter le manuel pour ETL, puis je lance le pipeline de rapports.

Tout le monde peut me donner quelques conseils pour exécuter 2 travaux dans un pipeline. Merci.

+0

J'ai trouvé la solution est la suivante: je construis processus ETL dans un pipeline et processus regroupés dans un autre pipeline, après que j'exporter chaque pipeline Jar fichier exécutable et j'utilise script shell pour exécuter tous les jours calendrier de traitement par lots avec Aggregate dépend du statut du processus ETL. – lknguyen

Répondre

1

Vous devriez être capable de faire les deux dans un seul pipeline. Plutôt que d'écrire dans BigQuery, puis d'essayer de le lire et de générer le rapport, pensez à utiliser simplement les données intermédiaires dans les deux cas. Par exemple:

PCollection<Input> input = /* ... */; 
// Perform your transformation logic 
PCollection<Intermediate> intermediate = input 
    .apply(...) 
    .apply(...); 
// Convert the transformed results into table rows and 
// write those to BigQuery. 
intermediate 
    .apply(ParDo.of(new IntermediateToTableRowETL()) 
    .apply(BigQueryIO.write(...)); 
// Generate your report over the transformed data 
intermediate 
    .apply(...) 
    .apply(...); 
+0

merci @Ben, je vais essayer – lknguyen