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

使用kotlin-spark-api时无法访问org.apache.spark.sql.Dataset类求助

解决Kotlin Spark API中无法访问org.apache.spark.sql.Dataset的问题

核心原因

错误提示的根源是Spark SQL依赖的配置方式错误:你使用compileOnly引入spark-sql,这个配置只会让依赖在编译阶段生效,运行时类路径中不会包含Spark SQL的类,而kotlin-spark-api运行时需要访问Dataset等Spark核心类。

解决方案

1. 修正Gradle依赖配置

将spark-sql的依赖从compileOnly改为implementation,确保编译和运行时都能访问到Spark SQL的类:

implementation("org.jetbrains.kotlinx.spark:kotlin-spark-api_3.3.2_2.13:1.2.4")
implementation("org.apache.spark:spark-sql_2.13:3.3.2")

如果你是要打包Spark应用提交到集群(集群已预装Spark),可以将spark-sql改为runtimeOnly以避免打包冗余依赖,但本地开发调试时必须用implementation。

2. 修正代码变量名错误

你的代码中存在一处变量名拼写错误:

val eventsDf = spark.createDataFrame(extractedEvents, EventDict::class.java)
val sortedDf = extractedEventsDf.sort(col(EventColumns.DATETIME).asc()) // 此处使用了未定义的extractedEventsDf

需修正为:

val sortedDf = eventsDf.sort(col(EventColumns.DATETIME).asc())

3. 排查依赖冲突

如果修改后仍有问题,检查项目中是否存在其他版本的Spark依赖导致冲突。可以通过Gradle命令查看依赖树:

./gradlew dependencies

搜索spark-sql相关条目,确保所有Spark依赖的版本统一为3.3.2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 19:52:09