You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Airflow调度本地Spark任务失败,请求协助排查解决

解决Airflow运行Spark任务的三个核心错误

根据报错日志,问题集中在三个关键点,逐个解决即可:

1. Spark Master地址格式错误(双端口7077:7077)

问题原因

Airflow的Spark连接配置中,Host字段重复添加了端口,导致生成的spark-submit命令出现spark://MacBook-Pro-de-AdminSensei-9.local:7077:7077这种无效格式。

解决方法

  • 方法一:修正Airflow Spark连接配置
    进入Airflow UI的「Admin → Connections」,找到ID为spark的连接,修改Host字段为spark://MacBook-Pro-de-AdminSensei-9.local:7077,确保只包含一个端口号。
  • 方法二:直接指定本地模式(适合本地测试)
    如果是运行本地Spark任务,无需依赖远程Master,可直接在DAG的SparkSubmitOperator中指定master参数,去掉conn_id:
    task_elt_documento_pagar = SparkSubmitOperator(
        task_id='task_run_pysparkjob',
        master='local[*]',  # 用本地模式,自动使用所有CPU核心
        application="./dags/sparkjob.py",
    )
    

2. 找不到ps命令

问题原因

运行Airflow的环境(如Docker容器)缺少procps包,ps命令属于该包,Spark的load-spark-env.sh脚本需要用到它。

解决方法

根据环境系统类型安装procps:

  • Ubuntu/Debian系统:
    apt-get update && apt-get install -y procps
    
  • CentOS/RHEL系统:
    yum install -y procps-ng
    
  • Docker环境:在Dockerfile中添加上述安装命令,构建镜像时自动安装。

3. JAVA_HOME未设置

问题原因

Spark依赖Java运行环境,当前Airflow执行环境未配置JAVA_HOME环境变量。

解决方法

  • 全局设置(推荐)
    在Airflow的启动脚本或配置文件中添加环境变量:
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64  # 替换为你的Java实际路径
    export PATH=$JAVA_HOME/bin:$PATH
    
    如果是Docker容器,在Dockerfile中添加:
    ENV JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
    ENV PATH=$JAVA_HOME/bin:$PATH
    
  • 任务级临时设置
    在SparkSubmitOperator中通过env_vars参数传递:
    task_elt_documento_pagar = SparkSubmitOperator(
        task_id='task_run_pysparkjob',
        master='local[*]',
        application="./dags/sparkjob.py",
        env_vars={'JAVA_HOME': '/usr/lib/jvm/java-1.8.0-openjdk-amd64'}
    )
    

内容的提问来源于stack exchange,提问作者KuRu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 21:31:11