Как получить jobId, отправленный с помощью шаблона рабочего процесса Dataproc

Я отправил задание Hive с использованием шаблона рабочего процесса Dataproc с помощью оператора Airflow (DataprocWorkflowTemplateInstantiateInlineOperator), написанный на Python. После отправки задания какое-то имя будет присвоено как jobId (пример: job0-abc2def65gh12).

Поскольку мне не удалось получить jobId, я попытался передать jobId в качестве параметра из REST API, который не работает.

Могу ли я получить jobId или, если это невозможно, передать jobId в качестве параметра?




Ответы (1)


JobId будет доступен как часть поля metadata в объекте Operation, который возвращается из операции создания экземпляра. См. Эту [1] статью о том, как работать с метаданными.

Оператор Airflow только опрашивает [2] для операции, но не возвращает окончательный объект операции. Вы можете попробовать добавить возврат к 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.

person tix    schedule 06.02.2019