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

在ADF Databricks作业集群安装Maven库遇问题求助

问题描述
  • 在初始化脚本执行命令/databricks/spark/bin/spark-shell --packages com.crealytics:spark-excel_2.13:3.4.1_0.19.0时,报错:
    Error: Could not find or load main class org.apache.spark.launcher.Main /databricks/spark/bin/spark-class: line 101: CMD: bad array subscript
    
  • 在SparkSession初始化时添加.config("spark.jars.packages", "com.databricks:spark-xml_2.12:0.15.0")配置,但该配置未生效
  • 工作区库(Workspace Libraries)已弃用,无法手动下载JAR到工作区并复制到/databricks/jars/
解决办法

1. 放弃直接在初始化脚本中使用spark-shell

Databricks环境中spark-shell并非集群初始化依赖的推荐方式,直接调用会因环境变量、启动流程不匹配触发报错,改用集群级依赖配置方案即可规避。

2. 集群级别配置Maven依赖(推荐)

方式一:通过集群UI配置

进入集群编辑页面,切换到Libraries标签,点击Install New,选择Maven类型,在Coordinates输入框中填入对应依赖坐标(如com.databricks:spark-xml_2.12:0.15.0或com.crealytics:spark-excel_2.13:3.4.1_0.19.0),保存后重启集群。此方式会自动完成依赖下载、加载,无需手动处理文件。

方式二:初始化脚本中手动下载并配置类路径

如果必须通过初始化脚本操作,可直接下载JAR到集群本地目录,再添加到Spark类路径:

# 下载spark-xml依赖到临时目录
curl -o /tmp/spark-xml.jar https://repo1.maven.org/maven2/com/databricks/spark-xml_2.12/0.15.0/spark-xml_2.12-0.15.0.jar
# 添加到Driver和Executor的类路径
echo "spark.driver.extraClassPath /tmp/spark-xml.jar" >> /databricks/driver/conf/spark.driver.extraClassPath.conf
echo "spark.executor.extraClassPath /tmp/spark-xml.jar" >> /databricks/driver/conf/spark.executor.extraClassPath.conf

注意:集群重启后临时目录文件会被清除,需确保脚本每次初始化都重新执行下载操作。

3. 修复SparkSession配置不生效问题

使用configure_spark_with_delta_pip时可能覆盖部分配置,可调整配置顺序:

from delta import configure_spark_with_delta_pip
from pyspark.sql import SparkSession

# 先初始化Delta配置
builder = configure_spark_with_delta_pip(SparkSession.builder.appName("oms-xml-streaming"))
# 再添加依赖及其他Spark配置
spark = (builder
         .config("spark.jars.packages", "com.databricks:spark-xml_2.12:0.15.0")
         .config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension")
         .config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog")
         .config("spark.databricks.delta.autoCompact.enabled", True)
         .getOrCreate())

也可在Notebook的Run Configuration中,将--packages com.databricks:spark-xml_2.12:0.15.0添加到Spark submit parameters,启动Notebook时会自动加载依赖。

4. 验证依赖加载状态

执行以下代码检查依赖是否成功加载:

# 过滤包含spark-xml的JAR包
spark.sparkContext.listJars().filter(lambda jar: "spark-xml" in jar)

返回非空列表则说明依赖已生效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 15:18:23