我想使用气流运行一些现有的bash脚本,而不修改脚本本身中的代码。是否可以在任务中不提及脚本中的shell命令?
答案 0 :(得分:0)
不确定是否理解了您的问题,但可以将Shell命令加载到 通过管理>>变量菜单将变量作为json文件。 然后在您的dag中读取变量并将其作为参数传递给BashOperator。
气流变量的更多细节: https://www.applydatascience.com/airflow/airflow-variables/
希望这篇文章对您有所帮助。
答案 1 :(得分:0)
只要Shell脚本与Airflow Worker在同一台计算机上运行,您就可以使用Bash Operator调用Shell脚本,如下所示:
t2 = BashOperator(
task_id='bash_example',
# Just call the script
bash_command="/home/batcher/test.sh ",
dag=dag)
答案 2 :(得分:0)
您必须将您的 shell 脚本所在的本地文件夹与 worker 进行“链接”,这意味着您需要在 docker-compose 文件的 worker 部分添加卷..
所以我在 worker 设置下添加了 volume 行,worker 现在查看本地机器上的这个文件夹:
airflow-worker:
<<: *airflow-common
command: celery worker
healthcheck:
test:
- "CMD-SHELL"
- 'celery --app airflow.executors.celery_executor.app inspect ping -d "celery@$${HOSTNAME}"'
interval: 10s
timeout: 10s
retries: 5
restart: always
volumes:
- /LOCAL_MACHINE_FOLDER/WHERE_SHELL_SCRIPT_IS:/folder_in_root_folder_of_worker