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

Jupyter/PyCharm运行Spark Avro报访问拒绝问题咨询

问题梳理
  • Jupyter环境下Spark读写Parquet、CSV格式文件正常,操作Avro格式时触发访问拒绝报错
  • 参照官方《Apache Avro Data Source Guide》方案,以管理员身份执行携带org.apache.spark:spark-avro_2.12:3.3.0依赖的./bin/spark-submit命令,仍返回访问被拒错误(对应报错参考截图1、截图2)
  • 2022年7月5日测试验证:命令行执行携带相同Avro依赖的./bin/spark-shell命令时,Avro相关代码可正常运行(运行界面参考Spark-shell截图、Avro编码截图),但命令行编码便捷性不足
  • 需要定位具体操作错误点,获取查看IDE启动Spark时对应spark-submit、spark-shell加载配置的方法
错误原因

Avro是Spark外部数据源组件,不属于核心内置模块:命令行执行spark-shell时手动传入的依赖参数只对当前命令行启动的实例生效,Jupyter、PyCharm自行启动的Spark实例默认仅加载核心内置依赖,不会自动拉取Avro依赖包,因此触发类加载失败、访问拒绝类报错。之前手动执行spark-submit仍报错,通常是依赖参数传入位置错误——--packages参数必须写在主类、应用jar路径参数之前,否则不会被提交逻辑解析。

修复方案

Jupyter环境

两种方式二选一即可:

  1. 启动Jupyter前在终端配置环境变量,再启动服务:
export PYSPARK_SUBMIT_ARGS='--packages org.apache.spark:spark-avro_2.12:3.3.0 pyspark-shell'
jupyter notebook
  1. 在Notebook代码中初始化SparkSession时直接注入依赖配置:
from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .appName("Avro_Test") \
    .config("spark.jars.packages", "org.apache.spark:spark-avro_2.12:3.3.0") \
    .getOrCreate()

PyCharm环境

两种方式二选一即可:

  1. 打开对应Python脚本的运行配置,在环境变量项添加PYSPARK_SUBMIT_ARGS,值设为--packages org.apache.spark:spark-avro_2.12:3.3.0 pyspark-shell
  2. 和Jupyter逻辑一致,在代码初始化SparkSession时,通过spark.jars.packages配置项传入Avro依赖坐标
查看IDE启动Spark加载配置的方法
  • 代码内查询:Spark实例启动后,执行spark.sparkContext.getConf().getAll(),会以列表形式返回当前进程加载的所有配置项,包含依赖jar路径、提交参数、资源配置等全量信息
  • 日志查询:打开Spark运行日志目录,默认路径为$SPARK_HOME/work/或当前运行目录下的spark-<用户名>-org.apache.spark.deploy.*.out文件,日志内会完整打印IDE启动Spark时拼接的等效spark-submit/spark-shell命令、所有加载的配置项与依赖包
  • 配置生效验证:执行spark.read.format("avro").load("测试avro文件路径"),无报错正常返回数据即配置成功

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:27:25