ワークフローで YAML ファイルを使用する

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

YAML ファイルを使用してワークフローを実行する

最初にワークフロー テンプレート リソースを作成せずにワークフローを実行するには、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=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=TEMPLATE_YAML \
        --region=REGION
    

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

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

  1. YAML ファイルに ワークフロー テンプレートをエクスポートします。エクスポート操作中に、id フィールドと version フィールド、すべての出力専用フィールドが出力からフィルタされ、エクスポートされた YAML ファイルには表示されません。

    gcloud dataproc workflow-templates export TEMPLATE_ID or TEMPLATE_NAME \
        --destination=TEMPLATE_YAML \
        --region=REGION
    
    WorkflowTemplateid と完全修飾テンプレート リソース name("projects/PROJECT_ID/regions/REGION/workflowTemplates/TEMPLATE_ID")のどちらでもコマンドに渡すことは可能です。

  2. YAML ファイルをローカルで編集します。テンプレートがエクスポートされたときに YAML ファイルからフィルタされた idversion、出力専用フィールドは、インポートされた YAML ファイルでは許可されません。

  3. 更新されたワークフロー テンプレートの YAML ファイルをインポートします。

    gcloud dataproc workflow-templates import TEMPLATE_ID or TEMPLATE_NAME \
        --source=TEMPLATE_YAML \
        --region=REGION
    
    WorkflowTemplateid と完全修飾テンプレート リソース name("projects/PROJECT_ID/regions/region/workflowTemplates/TEMPLATE_ID")のどちらでもコマンドに渡すことは可能です。同じ名前のテンプレート リソースは、上書き(更新)されてバージョン番号が大きくなります。同じ名前のテンプレートが存在しない場合は、作成されます。