我应该如何在气流中使用正确的所有者任务?

时间:2016-07-22 07:19:49

标签: owner airflow

我不理解气流中的“主人”。 ower的评论是“任务的所有者,建议使用unix用户名”。 我写了一些以下代码。

   Default_args = {
'owner': 'max',
'depends_on_past': False,
'start_date': datetime(2016, 7, 14),
'email': ['max@test.com'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),  

}

dag = DAG('dmp-annalect', default_args=default_args,
                schedule_interval='30 0 * * *')

pigjob_basedata = """{local_dir}/src/basedata/basedata.sh > 
{local_dir}/log/basedata/run_log &
""".format(local_dir=WORKSPACE)

task1_pigjob_basedata = BashOperator(
task_id='task1_pigjob_basedata',owner='max',
bash_command=pigjob_basedata ,
dag=dag)

但是我使用了命令“airflow test dagid taskid 2016-07-20”,我收到了一些错误, ...  {bash_operator.py:77} INFO - put:权限被拒绝:user = airflow, ....

我认为我的工作是使用“max”用户运行的,但很显然,使用“airflow”用户运行测试。

我希望如果我使用'max'用户运行我的任务,我该怎么做。

2 个答案:

答案 0 :(得分:1)

我想出了这个问题。 因为我在/ home / airflow /中设置了AIRFLOW_HOME,所以只有airflow可以访问这个文件目录。

答案 1 :(得分:0)

我已通过将用户airflow和所有其他拥有任务的用户添加到一个组中,然后授予整个组权限来读取,写入和执行airflow家中的文件来缓解这种情况。不确定这是否是最佳做法,但与将owner设置为每个DAG的airflow相比,它是否有效并使owner字段有用。