搭配使用 YAML 文件与工作流

您可以在 YAML 文件中定义工作流模板,然后实例化模板以运行工作流。您还可以导入和导出工作流模板 YAML 文件,以创建和更新 Dataproc 工作流模板资源。

使用 YAML 文件运行工作流

如需在未先创建工作流模板资源的情况下运行工作流,请使用 gcloud dataproc workflow-templates instantiate-from-file 命令。

  1. 在 YAML 文件中定义工作流模板。除 id 字段外,YAML 文件必须包含所有必填的 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 文件中定义工作流模板。此 YAML 文件与之前的 YAML 文件相同,但 zoneUri 字段设置为空字符串 ('') 以允许 Dataproc 自动选择地区功能为集群选择地区。
    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
    

导入和导出工作流模板 YAML 文件

您可以导入和导出工作流程模板 YAML 文件。通常,工作流模板首先导出为 YAML 文件,然后修改 YAML 文件,最后将导入修改后的 YAML 文件以更新模板。

  1. 将工作流模板导出为 YAML 文件。导出操作期间,idversion 字段以及所有仅输出字段都会从输出结果中滤除,从而不会出现在导出的 YAML 文件中。

    gcloud dataproc workflow-templates export TEMPLATE_ID or TEMPLATE_NAME \
        --destination=TEMPLATE_YAML \
        --region=REGION
    
    您可以将 WorkflowTemplate id 或完全合格的模板资源 name(“projects/PROJECT_ID/区域/REGION/workflowTemplates/TEMPLATE_ID”)传递给该命令。

  2. 在本地修改 YAML 文件。请注意,导入的 YAML 文件中不允许出现导出模板时从 YAML 文件中滤除 的idversion 和仅输出字段。

  3. 请运行以下命令,导入已更新的工作流模板 YAML 文件:

    gcloud dataproc workflow-templates import TEMPLATE_ID or TEMPLATE_NAME \
        --source=TEMPLATE_YAML \
        --region=REGION
    
    您可以将 WorkflowTemplate id 或完全合格的模板资源 name(“projects/PROJECT_ID/区域/region/workflowTemplates/TEMPLATE_ID”)传递给该命令。具有相同模板名称的模板资源将会被覆盖(更新),版本号将递增。如果不存在名称相同的模板,则会创建这样的模板。