Airflow中Spark任务显示成功但Spark UI无记录求助排查
本地Airflow+Spark任务问题排查方案
1. 处理ps命令未找到的问题
- 先在终端执行
which ps确认命令路径(一般是/bin/ps或/usr/bin/ps)。 - 确保Airflow运行环境的
PATH包含该路径:- 若用终端启动Airflow,检查当前终端
PATH,缺失则执行export PATH=$PATH:/bin:/usr/bin(根据实际路径调整)后再启动Airflow; - 若用systemd管理Airflow,在service配置文件中添加
Environment="PATH=/bin:/usr/bin:$PATH"; - 也可在Airflow的
airflow.cfg中通过env_vars全局设置PATH。
- 若用终端启动Airflow,检查当前终端
2. 配置JAVA_HOME环境变量
- 找到Java安装路径,执行
update-alternatives --list java可查看系统中Java的安装位置,比如/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java,取到jvm下的目录作为JAVA_HOME(即/usr/lib/jvm/java-8-openjdk-amd64)。 - 给Airflow配置
JAVA_HOME:- 终端启动Airflow:先执行
export JAVA_HOME=/path/to/your/java再启动; - systemd服务:在service文件中添加
Environment="JAVA_HOME=/path/to/your/java"; - DAG中单独配置:在
SparkSubmitOperator里指定env_vars参数:SparkSubmitOperator( task_id="run_pyspark", application="/path/to/your/script.py", env_vars={"JAVA_HOME": "/usr/lib/jvm/java-8-openjdk-amd64"}, master="local[*]", # 其他必要参数 )
- 终端启动Airflow:先执行
3. 修复spark-submit错误码1的问题
- 先手动在终端执行
spark-submit /path/to/your/script.py,确认脚本和Spark本身能正常运行,排除代码或Spark基础配置问题。 - 确保Airflow能找到
spark-submit:要么将Spark的bin目录(比如/opt/spark/bin)加入Airflow的PATH,要么在SparkSubmitOperator中指定spark_submit_path="/opt/spark/bin/spark-submit"。 - 检查
SparkSubmitOperator的master参数,本地模式需设为local[*],避免因master地址错误导致提交失败。
4. 解决Airflow任务显示成功但无Spark应用记录的问题
- 前面三个问题是根源,修复后重新运行DAG:
- 查看任务日志,确认
spark-submit执行成功,无报错; - 访问Spark历史服务器(默认
http://localhost:18080)查看已完成应用,若任务运行中可访问http://localhost:4040查看实时应用。
- 查看任务日志,确认
- Airflow之前显示任务成功可能是因为错误捕获逻辑未正确识别
spark-submit的失败状态,修复环境问题后状态会和实际执行结果一致。
内容的提问来源于stack exchange,提问作者KuRu
相关产品推荐
相关产品推荐

