DAG中随机表创建阶段因beeline文件未找到报错求助
针对你遇到的DAG中随机表创建任务报FileNotFoundError: [Errno 2] No such file or directory: 'beeline',但环境无变更、其他任务及手动CLI执行正常的情况,可从以下方向排查:
验证Airflow Worker的环境变量一致性
交互式shell的环境变量(尤其是PATH)和Airflow Worker进程的环境变量可能存在差异。可以在失败任务的前置步骤添加BashOperator执行echo $PATH,将输出和手动执行echo $PATH的结果对比,确认beeline所在目录是否存在于Worker的PATH中。Bitnami部署的Airflow,Worker通常不会加载用户的.bashrc/.profile,容易导致环境变量不全。检查任务级别的环境变量干扰
对比成功任务和失败任务的CDW Operator配置,确认失败任务是否通过env参数或hiveconfs无意中覆盖了PATH等关键环境变量,导致beeline无法被找到。排查beeline可执行文件的状态波动
即使无主动变更,系统自动维护(如包更新、磁盘清理)可能导致beeline的可执行文件或软链接损坏。可在Worker节点定时执行which beeline确认路径有效性,或在任务中添加前置检查command -v beeline,提前发现路径问题。同时确认beeline所在目录及文件对Airflow Worker运行用户有可执行权限。排查Airflow Worker的进程异常
随机失败可能和Worker进程资源耗尽(如内存、文件描述符)有关,导致无法正常创建子进程调用beeline。查看Airflow Worker的日志,检查是否有进程崩溃、资源告警等信息,尝试重启Worker服务看是否缓解问题。修改CDW Hook的beeline调用路径
查看cdw_hook.py中run_cli方法的subprocess.Popen调用,若使用相对路径beeline,可改为绝对路径(如/usr/bin/beeline),避免依赖Worker的环境变量。
内容的提问来源于stack exchange,提问作者IPSRI

