我已使用Python编写的Airflow操作员(DataprocWorkflowTemplateInstantiateInlineOperator)帮助使用Dataproc工作流模板提交了一项Hive作业。提交作业后,会将一些名称指定为jobId(例如:job0-abc2def65gh12
)。
由于我无法获取jobId,因此我尝试将jobId作为无法使用的REST API中的参数进行传递。
我可以获取jobId,或者如果无法获取,可以将jobId作为参数传递吗?
答案 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