Utilizzare i file YAML con i flussi di lavoro

Puoi definire un modello di workflow in un file YAML, quindi creare un'istanza del modello per eseguire il workflow. Puoi anche importare ed esportare un file YAML del modello di workflow per creare e aggiornare una risorsa del modello di workflow Dataproc.

Eseguire un workflow utilizzando un file YAML

Per eseguire un workflow senza prima creare una risorsa del modello di workflow, utilizza il comando gcloud dataproc workflow-templates instantiate-from-file.

  1. Definisci il modello di workflow in un file YAML. Il file YAML deve includere tutti i campi WorkflowTemplate obbligatori, ad eccezione del campo id, e deve anche escludere il campo version e tutti i campi di sola output. Nell'esempio di workflow seguente, l'elenco prerequisiteStepIds in il passaggio terasort garantisce che il terasort passaggio inizi solo dopo il completamento del passaggio teragen con successo.
    jobs:
    - hadoopJob:
        args:
        - teragen
        - '1000'
        - hdfs:///gen/
        mainJarFileUri: file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar
      stepId: teragen
    - hadoopJob:
        args:
        - terasort
        - hdfs:///gen/
        - hdfs:///sort/
        mainJarFileUri: file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar
      stepId: terasort
      prerequisiteStepIds:
        - teragen
    placement:
      managedCluster:
        clusterName: my-managed-cluster
        config:
          gceClusterConfig:
            zoneUri: us-central1-a
    
  2. Esegui il workflow:
    gcloud dataproc workflow-templates instantiate-from-file \
        --file=TEMPLATE_YAML \
        --region=REGION
    

Creare un'istanza di un workflow utilizzando un file YAML con il posizionamento automatico delle zone Dataproc

  1. Definisci il modello di workflow in un file YAML. Questo file YAML è uguale al file YAML precedente, tranne per il fatto che il campo zoneUri è impostato sulla stringa vuota ('') per consentire a Dataproc Posizionamento automatico delle zone di selezionare la zona per il cluster.
    jobs:
    - hadoopJob:
        args:
        - teragen
        - '1000'
        - hdfs:///gen/
        mainJarFileUri: file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar
      stepId: teragen
    - hadoopJob:
        args:
        - terasort
        - hdfs:///gen/
        - hdfs:///sort/
        mainJarFileUri: file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar
      stepId: terasort
      prerequisiteStepIds:
        - teragen
    placement:
      managedCluster:
        clusterName: my-managed-cluster
        config:
          gceClusterConfig:
            zoneUri: ''
    
  2. Esegui il workflow. Quando utilizzi il posizionamento automatico, devi passare una regione al gcloud comando.
    gcloud dataproc workflow-templates instantiate-from-file \
        --file=TEMPLATE_YAML \
        --region=REGION
    

Importare ed esportare un file YAML del modello di workflow

Puoi importare ed esportare file YAML del modello di workflow. In genere, un modello di workflow viene prima esportato come file YAML, quindi il file YAML viene modificato e infine importato per aggiornare il modello.

  1. Esporta il modello di workflow in un file YAML. Durante l'operazione di esportazione, i campi id e version e tutti i campi di sola output vengono filtrati dall'output e non vengono visualizzati nel file YAML esportato.

    gcloud dataproc workflow-templates export TEMPLATE_ID or TEMPLATE_NAME \
        --destination=TEMPLATE_YAML \
        --region=REGION
    
    Puoi passare al comando l' WorkflowTemplate di WorkflowTemplate id o il name della risorsa del modello completo ("projects/PROJECT_ID/regions/REGION/workflowTemplates/TEMPLATE_ID").

  2. Modifica il file YAML in locale. Tieni presente che i campi id, version, e di sola output, che sono stati filtrati dal file YAML durante l'esportazione del modello, non sono consentiti nel file YAML importato.

  3. Importa il modello di workflow aggiornato file YAML:

    gcloud dataproc workflow-templates import TEMPLATE_ID or TEMPLATE_NAME \
        --source=TEMPLATE_YAML \
        --region=REGION
    
    Puoi passare al comando WorkflowTemplate id di WorkflowTemplate o il name della risorsa del modello completo ("projects/PROJECT_ID/regions/region/workflowTemplates/TEMPLATE_ID"). La risorsa del modello con lo stesso nome del modello verrà sovrascritta (aggiornata) e il relativo numero di versione verrà incrementato. Se non esiste un modello con lo stesso nome, verrà creato.