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

Airflow中SparkSubmitOperator配置spark-avro依赖不生效问题

问题原因

你的代码存在两个核心错误,直接导致依赖配置不生效:

  • 对Python字典的update()方法理解错误:dict.update()是原地修改字典的方法,执行后不会返回新字典,返回值固定为None。你把conf.update()的返回值赋值给conf_sp,最终传入SparkSubmitOperator的conf参数实际是空值None,所有Spark配置都没有被正确传入。
  • 配置传递方式冗余:SparkSubmitOperator本身提供了packages参数专门用于传递spark-submit的--packages参数,对应拉取spark.jars.packages配置的依赖,不需要硬写在conf字典里,能避免不同Spark提交模式下的配置优先级问题。
修正方案
# 读取基础配置
conf = Variable.get("spark_conf", deserialize_json=True)
# 直接原地更新配置字典,不要接收update的返回值
conf.update({
    # 其他需要补充的Spark配置可以写在这里
})

op = SparkSubmitOperator(
    application="my_app",
    conf=conf,
    # 推荐直接通过packages参数传递Avro依赖,不需要写在conf里
    packages="org.apache.spark:spark-avro_2.12:2.4.3",
    # 其余原有参数保持不变
    ....
)

额外排查点:请确认你集群部署的Spark 2.4.3对应的Scala编译版本,如果你集群的Spark是基于Scala 2.11编译的,需要把依赖改成org.apache.spark:spark-avro_2.11:2.4.3,Scala版本不匹配也会导致Avro模块加载失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 23:48:39