如何获取使用 Dataproc 工作流模板提交的 jobId

How to get jobId that was submitted using Dataproc Workflow Template

我在 Python 编写的 Airflow 操作员 (DataprocWorkflowTemplateInstantiateInlineOperator) 的帮助下使用 Dataproc 工作流模板提交了一个 Hive 作业。提交作业后,一些名称将被指定为 jobId(例如:job0-abc2def65gh12)。

因为我无法获得 jobId,所以我尝试将 jobId 作为参数从 REST API 传递,但这是行不通的。

我可以获取 jobId 吗?如果不可能,我可以将 jobId 作为参数传递吗?

JobId 将作为 Operation 对象中 metadata 字段的一部分提供,该对象是从实例化操作 return 编辑的。请参阅这篇 [1] 文章,了解如何使用元数据。

Airflow 操作员仅在 Operation 上轮询 [2],但不会 return 最终的 Operation 对象。您可以尝试将 return 添加到 execute.

另一种选择是在工作流完成后使用 dataproc rest API [3]。分配给工作流本身的任何标签都将传播到集群和作业,因此您可以执行列表作业调用。例如,过滤器参数可能如下所示:filter = labels.my-label=12345

[1] https://cloud.google.com/dataproc/docs/concepts/workflows/debugging#using_workflowmetadata

[2]https://github.com/apache/airflow/blob/master/airflow/contrib/operators/dataproc_operator.py#L1376

[3]https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.jobs/list