运行spark-cassandra-connector报QueryPlan实例化错误如何解决
问题根因
你遇到的java.lang.InstantiationError: com.datastax.oss.driver.internal.core.util.collection.QueryPlan错误本质是Datastax Java Driver版本冲突:spark-cassandra-connector 2.5.1内置依赖适配的shaded版Java Driver 4.11.3,当项目或运行环境中存在其他版本的Java Driver时,QueryPlan类的定义在不同版本中不兼容(抽象类与接口的定义变更),导致实例化失败。
解决方案
- 排查项目依赖冲突:Maven项目执行
mvn dependency:tree,Gradle项目执行gradle dependencies,查找所有独立引入的com.datastax.oss:java-driver-core相关依赖,全部排除即可。spark-cassandra-connector 2.5.1已经内置了适配的驱动包,无需额外独立引入Java Driver依赖。 - 处理Spring Boot默认依赖冲突:如果是Spring Boot项目,Spring Boot的依赖管理会默认指定Datastax Java Driver的版本,需要在依赖声明中主动排除Spring Boot自带的Java Driver,或者强制指定版本为4.11.3与connector适配。
- 解决Spark集群环境依赖冲突:如果是提交作业到独立Spark集群运行,检查集群公共classpath中是否存在不兼容的Datastax Java Driver,可在提交作业时添加参数
--conf spark.driver.userClassPathFirst=true --conf spark.executor.userClassPathFirst=true,优先加载作业包中自带的依赖,避免集群公共依赖冲突。 - 校验Scala版本匹配:Spark 2.4.1默认使用Scala 2.11版本,确保引入的spark-cassandra-connector artifactId为
spark-cassandra-connector_2.11,不要误用对应Scala 2.12的connector版本。
内容的提问来源于stack exchange,提问作者IAmHere
相关产品推荐
相关产品推荐

