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

在Jupyter Notebook中读取XML文件遇Py4JJavaError错误求助

解决PySpark读取XML时数据源找不到的问题

问题根源

你在Jupyter Notebook中设置PYSPARK_SUBMIT_ARGS的时机太晚——SparkContext/Session已经完成初始化,这个环境变量不会被生效,导致spark-xml依赖包没有被加载,所以抛出ClassNotFoundException。

解决方案

方案1:启动Jupyter前设置环境变量(推荐)

在终端/命令行中先设置环境变量,再启动Jupyter,确保Spark启动时加载指定依赖:

  • Linux/macOS:
export PYSPARK_SUBMIT_ARGS='--packages com.databricks:spark-xml_2.13:0.15.0 pyspark-shell'
jupyter notebook
  • Windows CMD:
set PYSPARK_SUBMIT_ARGS=--packages com.databricks:spark-xml_2.13:0.15.0 pyspark-shell
jupyter notebook

启动Jupyter后,直接初始化SparkSession并读取XML:

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("XMLReader").getOrCreate()
df = spark.read.format('xml').option('rowTag', 'row').load('test.xml')

方案2:手动指定Jar包路径(无需重启Jupyter)

  1. 下载与你的Spark/Scala版本匹配的spark-xml Jar包(比如对应Scala 2.13、Spark 3.3+的版本为spark-xml_2.13-0.15.0.jar)
  2. 在初始化SparkSession时指定Jar路径:
from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .appName("XMLReader") \
    .config("spark.jars", "/绝对路径/spark-xml_2.13-0.15.0.jar") \
    .getOrCreate()

df = spark.read.format('xml').option('rowTag', 'row').load('test.xml')

注意事项

  • 确保spark-xml的版本与你的Spark、Scala版本兼容:比如Scala 2.13对应Spark 3.0+,尽量避免使用0.4.1这类过旧版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 13:16:16