Utiliser des fichiers YAML avec des workflows

Vous pouvez définir un modèle de workflow dans un fichier YAML, puis instancier le modèle pour exécuter ce workflow. Vous pouvez également importer et exporter un fichier YAML de modèle de workflow pour créer et mettre à jour une ressource de modèle de workflow Dataproc.

Exécuter un workflow à l'aide d'un fichier YAML

Pour exécuter un workflow sans créer de ressource de modèle au préalable, exécutez la commande gcloud dataproc workflow-templates instantiate-from-file.

  1. Définissez votre modèle de workflow dans un fichier YAML. Celui-ci doit inclure tous les champs WorkflowTemplate obligatoires, à l'exception du champ id, et doit également exclure le champ version et tous les champs exclusivement de sortie. Dans l'exemple de workflow suivant, la liste prerequisiteStepIds de l'étape terasort garantit que l'étape terasort ne débute qu'une fois l'étape teragen terminée.
    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. Exécutez le workflow comme suit :
    gcloud dataproc workflow-templates instantiate-from-file \
        --file=TEMPLATE_YAML \
        --region=REGION
    

Instancier un workflow à l'aide d'un fichier YAML avec la sélection de zone automatique de Dataproc

  1. Définissez votre modèle de workflow dans un fichier YAML. Ce fichier YAML est identique au fichier YAML précédent, si ce n'est que le champ zoneUri est défini sur une chaîne vide ('') pour permettre à la fonctionnalité de sélection de zone automatique de Dataproc de sélectionner la zone du 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. Exécutez le workflow. Lorsque vous utilisez la sélection automatique, vous devez transmettre un région à la commande gcloud.
    gcloud dataproc workflow-templates instantiate-from-file \
        --file=TEMPLATE_YAML \
        --region=REGION
    

Importer et exporter un fichier YAML de modèle de workflow

Vous pouvez importer et exporter des fichiers YAML de modèles de workflow. Généralement, un modèle de workflow est d'abord exporté sous forme de fichier YAML. Ce fichier est ensuite modifié, puis importé pour mettre à jour le modèle de workflow.

  1. Exportez le modèle de workflow dans un fichier YAML. Au cours de l'opération d'exportation, les champs id et version, ainsi que tous les champs exclusivement de sortie, sont filtrés de la sortie et n'apparaissent pas dans le fichier YAML exporté.

    gcloud dataproc workflow-templates export TEMPLATE_ID or TEMPLATE_NAME \
        --destination=TEMPLATE_YAML \
        --region=REGION
    
    Vous pouvez transmettre WorkflowTemplate id ou la ressource de modèle complète name ("projects/PROJECT_ID/regions/REGION/workflowTemplates/TEMPLATE_ID") à la commande.

  2. Modifiez le fichier YAML en local. Notez que les champs id, version et les champs exclusivement de sortie, filtrés du fichier YAML lors de l'exportation du modèle, ne sont pas autorisés dans le fichier YAML importé.

  3. Importez le fichier YAML de modèle de workflow mis à jour, comme suit :

    gcloud dataproc workflow-templates import TEMPLATE_ID or TEMPLATE_NAME \
        --source=TEMPLATE_YAML \
        --region=REGION
    
    Vous pouvez transmettre WorkflowTemplate id ou la ressource de modèle complète name ("projects/PROJECT_ID/regions/region/workflowTemplates/TEMPLATE_ID") à la commande. Le modèle de ressource portant le même nom de modèle est écrasé (mis à jour), et son numéro de version est incrémenté. S'il n'existe aucun modèle portant un nom identique, un nouveau modèle est créé.