在Airflow 2.0中使用BashOperator传递给shell脚本的参数

gjmwrych  于 2023-02-05  发布在  Shell
关注(0)|答案(1)|浏览(183)

我正在使用airflow 2.0,最近遇到了一个问题。因此,在我的dag中,我通过传递日期和小时等参数调用shell脚本,在脚本中,它应该理想地获取值并执行一些操作。但不幸的是,值没有被替换。Date ='{{(next_execution_date + macros.timedelta(hours=9,days=-3)).strftime(“%Y%m%d”)}}' //global
BashOperator=(任务标识符="",dag=dag,bash命令=“"”echo“hi”“”+“”“/路径/file.sh日期小时"”“)在shell脚本文件中。sh:echo“Date is $1”echo“Hour is $2”检查日志并打印- Date是Date,Hour是Hr。有人能帮助我正确传递此参数吗?提前感谢

hfsqlsce

hfsqlsce1#

你可能会有一个问题,一个报价是关闭在一个点上,很难从你的问题。
这对我很有效(Airflow 2.5.1):
DAG

from airflow import DAG
from pendulum import datetime
from airflow.operators.bash import BashOperator

with DAG(
    dag_id="scripting_dag",
    start_date=datetime(2022,12,10),
    schedule="@daily",
    catchup=False,
) as dag:

    t1 = BashOperator(
        task_id="t1",
        bash_command="my_script.sh",
        env={
            "my_date": "{{ (next_execution_date + macros.timedelta(hours=9,days=-3)).strftime('%Y%m%d') }}",
            "my_hour": "{{ (next_execution_date + macros.timedelta(hours=9,days=-3)).strftime('%H') }}"

        }
    )

脚本my_script.sh:

echo $my_date
echo $my_hour

日志

[2023-02-03, 16:35:28 UTC] {subprocess.py:75} INFO - Running command: ['/bin/bash', '-c', 'echo $my_date\necho $my_hour']
[2023-02-03, 16:35:28 UTC] {subprocess.py:86} INFO - Output:
[2023-02-03, 16:35:28 UTC] {subprocess.py:93} INFO - 20230201
[2023-02-03, 16:35:28 UTC] {subprocess.py:93} INFO - 01

相关问题