首页 > 解决方案 > 如何获取使用 Dataproc 工作流模板提交的 jobId

问题描述

在用 Python 编写的 Airflow 运算符 ( DataprocWorkflowTemplateInstantiateInlineOperator )的帮助下,我使用 Dataproc 工作流模板提交了 Hive 作业。提交作业后,某些名称将被分配为 jobId(例如:)job0-abc2def65gh12

由于我无法获得 jobId,我尝试将 jobId 作为参数从 REST API 传递,但它不起作用。

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

标签: python-3.xgoogle-cloud-platformairflowgoogle-cloud-dataprocgoogle-cloud-composer

解决方案


JobId 将作为从 Instantiate 操作返回的对象中的metadata字段的一部分提供。Operation有关如何使用元数据的信息,请参阅这篇 [1] 文章。

Airflow 运算符仅对 Operation 进行轮询 [2],但不返回最终的 Operation 对象。您可以尝试将返回添加到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


推荐阅读