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

时间:2019-02-06 10:09:06

标签: python-3.x google-cloud-platform airflow google-cloud-dataproc google-cloud-composer

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

由于我无法获取jobId,因此我尝试将jobId作为无法使用的REST API中的参数进行传递。

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

1 个答案:

答案 0 :(得分:1)

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

Airflow操作员仅在Operation上轮询[2],但不返回最终的Operation对象。您可以尝试向execute添加收益。

另一种选择是在工作流程完成后使用dataproc rest API [3]。分配给工作流本身的所有标签都将传播到群集和作业,因此您可以进行列表作业调用。例如,filter参数可能类似于: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