您可以在 YAML 文件中定义工作流模板,然后实例化模板以运行工作流。您还可以导入和导出工作流模板 YAML 文件,以创建和更新 Dataproc 工作流模板资源。
使用 YAML 文件运行工作流
如需在未先创建工作流模板资源的情况下运行工作流,请使用 gcloud dataproc workflow-templates instantiate-from-file 命令。
- 在 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
- 运行工作流:
gcloud dataproc workflow-templates instantiate-from-file \ --file=your-template.yaml \ --region=region
通过 Dataproc 自动选择地区功能使用 YAML 文件来实例化工作流
- 在 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: ''
- 运行工作流。使用自动选择地区功能时,您必须将非全球性区域传递给
gcloud
命令。gcloud dataproc workflow-templates instantiate-from-file \ --file=your-template.yaml \ --region=region
导入和导出工作流模板 YAML 文件
您可以导入和导出工作流程模板 YAML 文件。通常,工作流模板首先导出为 YAML 文件,然后修改 YAML 文件,最后将导入修改后的 YAML 文件以更新模板。
将工作流模板导出为 YAML 文件。导出操作期间,
id
和version
字段以及所有仅输出字段都会从输出结果中滤除,从而不会出现在导出的 YAML 文件中。 您可以将 WorkflowTemplategcloud dataproc workflow-templates export template-id or template-name \ --destination=template.yaml \ --region=region
id
或完全合格的模板资源name
(“projects/projectId/regions/region/workflowTemplates/template_id”)传递给该命令。在本地修改 YAML 文件。请注意,导入的 YAML 文件中不允许出现导出模板时从 YAML 文件中滤除 的
id
、version
和仅输出字段。请运行以下命令,导入已更新的工作流模板 YAML 文件:
您可以将 WorkflowTemplategcloud dataproc workflow-templates import template-id or template-name \ --source=template.yaml \ --region=region
id
或完全合格的模板资源name
(“projects/projectId/regions/region/workflowTemplates/template_id”)传递给该命令。具有相同模板名称的模板资源将会被覆盖(更新),版本号将递增。如果不存在名称相同的模板,则会创建这样的模板。