Я не пробовал то, что предложил @kaxil, но если я правильно понял ваш вопрос, вы хотите получить переменную run_id
из Airflow и использовать ее в своем скрипте python (pySpark).Если это так, я предполагаю, что вы используете свою работу от BashOperator
до spark-submit
.При отправке искальной работы вам разрешено (вместе с вашей работой) предоставить некоторые аргументы .Эти аргументы отображаются как системные аргументы, которые вы можете увидеть, если выполните print(sys.argv)
(полезно узнать, в какой позиции находится ваша переменная).Поскольку вы уже нажали на переменную bash_task
, вам придется ее вытянуть.Поэтому, когда вы отправляете свое искровое задание, вы также должны добавить дополнительный аргумент, подобный этому:
cmd=""spark-submit your-pyspark-file.py {{ ti.xcom_pull("test") }}
retrieval = BashOperator(
namespace='randomname',
arguments=[cmd],
name='example-dag1',
task_id='name-you-desire',
provide_context=True,
get_logs=True,
dag=dag)
Затем, если вы выполнили print(sys.argv)
, вы сможете увидеть свою переменную в качестве аргумента и в вашемСценарий, к которому вы можете обратиться, используя sys.argv[1]
(если он находится во второй позиции, 0, если он находится в первой и т. д.).