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

Spark配置需在JAR加载前应用吗?类加载异常及配置报错求助

问题:Spark配置加载顺序导致自定义扩展类找不到

我创建了一个包含NDBSparkSessionExtension的JAR文件,通过以下命令验证类存在:

> jar -tf vast-uber.jar | grep ndb.NDBSparkSessionExtension
ndb/NDBSparkSessionExtension.class

我已将该JAR上传至UC存储卷,并添加为集群库。

集群配置

spark.ndb.secret_access_key ****
spark.ndb.rowgroups_per_subsplit 1
spark.ndb.access_key_id ****
spark.sql.extensions ndb.NDBSparkSessionExtension
spark.ndb.dynamic_filter_compaction_threshold 100
spark.sql.catalog.ndb spark.sql.catalog.ndb.VastCatalog
spark.ndb.retry_sleep_duration 1
spark.ndb.endpoint http://172.19.197.1
spark.ndb.retry_max_count 3
spark.ndb.parallel_import true
spark.master local[*, 4]
spark.ndb.num_of_sub_splits 8
spark.databricks.cluster.profile singleNode
spark.ndb.num_of_splits 64
spark.ndb.data_endpoints http://127.0.0.1
spark.ndb.query_data_rows_per_split 4000000
spark.ndb.dynamic_filtering_wait_timeout 2

日志报错信息

集群启动日志显示,SparkContext初始化后才开始加载JAR,导致SparkSession初始化时找不到扩展类:

25/02/06 10:41:43 INFO DatabricksILoop$: Successfully initialized SparkContext
25/02/06 10:41:43 WARN SparkSession: Cannot use ndb.NDBSparkSessionExtension to configure session extensions.
java.lang.ClassNotFoundException: ndb.NDBSparkSessionExtension
    at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
    ...
25/02/06 10:42:07 INFO DriverCorral: [Thread 170] AttachLibraries - candidate libraries: List(dbfs:/Volumes/databricks_catalog/default/vastjars/vast-uber.jar)
25/02/06 10:42:07 INFO LibraryDownloadManager: Preparing to download library file from UC Volume path: dbfs:/Volumes/databricks_catalog/default/vastjars/vast-uber.jar

我的疑问是:我原本期望库会在应用配置之前加载,请问Spark配置是否会在JAR文件加载之前生效?

使用的Databricks Runtime版本:15.4 LTS (includes Apache Spark 3.5.0, Scala 2.12)


更新:尝试通过spark.jars配置加载JAR失败

我尝试在集群配置中添加spark.jars dbfs:/Volumes/databricks_catalog/default/vastjars/vast-uber.jar,出现以下错误:

25/02/06 11:09:22 WARN FileSystem: Failed to initialize filesystem dbfs:/Volumes/databricks_catalog/default/vastjars/vast-uber.jar: com.databricks.backend.daemon.data.common.InvalidMountException: Error while using path /Volumes/databricks_catalog/default/vastjars for creating file system within mount at '/Volumes/databricks_catalog/default/vastjars'.
25/02/06 11:09:22 ERROR SparkContext: Failed to add dbfs:/Volumes/databricks_catalog/default/vastjars/vast-uber.jar to Spark environment
com.databricks.backend.daemon.data.common.InvalidMountException: Error while using path /Volumes/databricks_catalog/default/vastjars for creating file system within mount at '/Volumes/databricks_catalog/default/vastjars'.
    at com.databricks.backend.daemon.data.common.InvalidMountException$.apply(DataMessages.scala:765)
    at com.databricks.backend.daemon.data.filesystem.MountEntryResolver.createFileSystem(MountEntryResolver.scala:154)

如果去掉dbfs:前缀,使用配置spark.jars /Volumes/databricks_catalog/default/vastjars/vast-uber.jar,集群直接无法启动。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 13:05:56