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

Databricks Runtime 10.4 LTS下spark-xml兼容版本咨询及报错处理

适配Databricks Runtime 10.4 LTS的spark-xml兼容版本问题解决

环境与代码

使用Databricks Runtime 10.4 LTS(内置Apache Spark 3.2.1、Scala 2.12),通过以下自定义代码解析XML列生成DataFrame:

from pyspark.sql.column import Column, _to_java_column
from pyspark.sql.types import _parse_datatype_json_string
def ext_from_xml(xml_column, schema, options={}):
    java_column = _to_java_column(xml_column.cast('string'))
    java_schema = spark._jsparkSession.parseDataType(schema.json())
    scala_map = spark._jvm.org.apache.spark.api.python.PythonUtils.toScalaMap(options)
    jc = spark._jvm.com.databricks.spark.xml.functions.from_xml(
        java_column, java_schema, scala_map)
    return Column(jc)

def ext_schema_of_xml_df(df, options={}):
    assert len(df.columns) == 1

    scala_options = spark._jvm.PythonUtils.toScalaMap(options)
    java_xml_module = getattr(getattr(
        spark._jvm.com.databricks.spark.xml, "package$"), "MODULE$")
    java_schema = java_xml_module.schema_of_xml_df(df._jdf, scala_options)
    return _parse_datatype_json_string(java_schema.json())
  
df = spark.read.format('delta').table("tablename")
payloadSchema = ext_schema_of_xml_df(df.select("Columnname"))

报错信息

执行代码后触发以下错误:

java.lang.NoClassDefFoundError: Could not initialize class com.databricks.spark.xml.util.PermissiveMode$

当前使用的Maven坐标为 com.databricks:spark-xml_2.12:0.14.0。

兼容版本解决方案

spark-xml_2.12:0.14.0 仅适配Apache Spark 3.1.x版本,与Databricks Runtime 10.4 LTS内置的Spark 3.2.1存在兼容性冲突,导致类初始化失败。

需更换为适配Spark 3.2.x的版本,推荐使用:

com.databricks:spark-xml_2.12:0.15.0

该版本完全兼容Spark 3.2.1与Scala 2.12,可解决上述NoClassDefFoundError问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:23:19