ワークフローでの YAML ファイルの使用

YAML ファイルで WorkflowTemplate を定義し、テンプレートをインスタンス化してワークフローを実行できます。また、WorkflowTemplate の YAML ファイルをインポートしてエクスポートして、Dataproc WorkflowTemplate リソースを作成して更新することもできます。

YAML ファイルを使用してワークフローをインスタンス化する

最初に WorkflowTemplate リソースを作成せずにワークフローを実行するには、gcloud dataproc workflow-templates instantiate-from-file コマンドを使用します。

  1. YAML ファイルで WorkflowTemplate を定義します。YAML ファイルには、id フィールドを除いてすべての必須 WorkflowTemplate フィールドを含める必要があります。また、version フィールドとすべての出力専用フィールドを除外する必要もあります。次のワークフロー例では、terasort ステップの prerequisiteStepIds リストが、teragen ステップが正常に完了した後にのみ terasort ステップが始まるようにします。
        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. ワークフローを実行します。
        gcloud dataproc workflow-templates instantiate-from-file \
            --file your-template.yaml \
            --region region
        

Dataproc 自動ゾーン プレースメントで YAML ファイルを使用してワークフローをインスタンス化する

  1. YAML ファイルで WorkflowTemplate を定義します。この YAML ファイルは、Dataproc 自動ゾーン プレースメントでクラスタのゾーンを選択できるように zoneUri フィールドが空の文字列( "')に設定されている点を除いて、以前の YAML ファイルと同じです。
        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. ワークフローを実行します。自動プレースメントを使用するときに、非グローバル リージョンgcloud コマンドを渡す必要があります。
        gcloud dataproc workflow-templates instantiate-from-file \
            --file your-template.yaml \
            --region region
        

WorkflowTemplate の YAML ファイルのインポートとエクスポート

WorkflowTemplate の YAML ファイルのインポートやエクスポートを行えます。通常、WorkflowTemplate は最初に YAML ファイルとしてエクスポートされ、YAML が編集されて、編集された YAML ファイルがインポートされてテンプレートが更新されます。

  1. YAML ファイルに WorkflowTemplate をエクスポートします。エクスポート操作中に、id フィールドと version フィールド、すべての出力専用フィールドが出力からフィルタされ、エクスポートされた YAML ファイルに表示されません。
        gcloud dataproc workflow-templates export template-id or template-name 
    --destination template.yaml
    WorkflowTemplateid と完全修飾テンプレート リソース name("projects/projectId/regions/region/workflowTemplates/template_id")のどちらでもコマンドに渡すことが可能です。
  2. YAML ファイルをローカルで編集します。テンプレートがエクスポートされたときに YAML ファイルからフィルタされた idversion、出力専用フィールドは、インポートされた YAML ファイルでは許可されません。
  3. YAML ファイルに更新された WorkflowTemplate をインポートします。
        gcloud dataproc workflow-templates import template-id or template-name 
    --source template.yaml
    WorkflowTemplateid と完全修飾テンプレート リソース name("projects/projectId/regions/region/workflowTemplates/template_id")のどちらでもコマンドに渡すことが可能です。同じ名前のテンプレート リソースは、上書き(更新)されてバージョン番号が大きくなります。同じ名前のテンプレートが存在しない場合は、作成されます。