在AKS上部署的Spark 4.1.1 + Cosmos DB Cassandra API:没有连接器时会出现ClassNotFound;使用spark-cassandra-connector_2.13-3.5.1时会出现ClosedConnectionException

后端开发 2026-07-12

我们正在把在AKS(Kubernetes)上运行的Spark作业从Spark 3.5.3升级到Spark 4.1.1。

当前工作环境(Spark 3.5.3):

  • 连接器:com.datastax.spark:spark-cassandra-connector-assembly_2.12:3.5.1
  • 目标:Azure Cosmos DB Cassandra API
  • 通过Cassandra数据源进行读写(org.apache.spark.sql.cassandra)

在升级到Spark 4.1.1(在AKS上)后,我们看到:

案例A – 未提供连接器jar

  • SparkClassNotFoundException 在调用 .format("org.apache.spark.sql.cassandra")

案例B – 带有连接器jar spark-cassandra-connector-assembly_2.12:3.5.1

  • ClassNotFound错误已解决,但在读/写阶段与 java.io.IOException / ClosedConnectionException 相关的连接失败

问题: 在AKS上的Spark 4.1.1上读取/写入时,正确的连接器/产物(artifact)和配置是什么?针对 Cosmos DB Cassandra API?是否有已知需要变更的地方?

val df = spark.read.format("org.apache.spark.sql.cassandra").options(Map("keyspace" -> "", "table" -> "")).load()

环境:

  • AKS + Kubernetes上的Spark(spark-submit)
  • Spark:3.5.3(可用) → 4.1.1(失败)
  • 尝试的连接器:spark-cassandra-connector-assembly_2.13:3.5.1
  • 目标:Azure Cosmos DB Cassandra API

解决方案

你这里有几个点混在一起了:

  1. Scala 2.12与 2.13
  2. Spark版本3.5与 4.1

为Spark 4.1的开源连接器并不存在,你很可能需要来自DataStax的付费支持才能获得它。
可以考虑使用更新的工具,如DuckDB或 Polars,而不是Spark。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章