Hadoop 如何以Unix用户身份运行Apache DAG

Hadoop 如何以Unix用户身份运行Apache DAG,hadoop,airflow,apache-airflow,Hadoop,Airflow,Apache Airflow,我使用root帐户在集群上安装了Apache Airflow。我知道这是不好的做法,但这只是测试环境。我创建了一个简单的DAG: from airflow import DAG from airflow.operators.bash_operator import BashOperator from datetime import datetime, timedelta dag = DAG('create_directory', description='simple create direc

我使用
root
帐户在集群上安装了Apache Airflow。我知道这是不好的做法,但这只是测试环境。我创建了一个简单的DAG:

from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta

dag = DAG('create_directory', description='simple create directory workflow', start_date=datetime(2017, 6, 1))

t1 = BashOperator(task_id='create_dir', bash_command='mkdir /tmp/airflow_dir_test', dag=dag)

t2 = BashOperator(task_id='create_file', bash_command='echo airflow_works > /tmp/airflow_dir_test/airflow.txt')

t2.set_upstream(t1)
问题是,当我运行此作业时,
root
用户执行它。我试图添加
owner
参数,但不起作用。气流说:

Broken DAG: [/opt/airflow/dags/create_directory.py] name 'user1' is not defined

我的问题是,如何使用root以外的其他用户运行Apache Airflow DAG?

您可以将
run\u as\u user
参数用于unix用户的任何任务:

t1 = BashOperator(task_id='create_dir', bash_command='mkdir /tmp/airflow_dir_test', dag=dag, run_as_user='user1')
如果要将其应用于DAG中的每个任务,可以使用
default_args

dag = DAG('create_directory', description='simple create directory workflow', start_date=datetime(2017, 6, 1), default_args={'run_as_user': 'user1'})

t1 = BashOperator(task_id='create_dir', bash_command='mkdir /tmp/airflow_dir_test', dag=dag)

t2 = BashOperator(task_id='create_file', bash_command='echo airflow_works > /tmp/airflow_dir_test/airflow.txt')
请注意,
owner
参数用于其他对象