Cassandra搭配PySpark及Python3.9版本兼容与安装报错咨询
问题根因定位
- 首次
scala.Product$class类缺失报错:根因为Spark Cassandra连接器的编译Scala版本与PySpark运行依赖的Scala版本不匹配。PySpark 3.x官方默认基于Scala 2.12编译,若使用基于Scala 2.11编译的连接器,会触发该类缺失错误,Scala 2.12对底层核心类做了不兼容调整,删除了scala.Product$class类。 - Cassandra 4安装依赖报错:通过系统包管理器安装Cassandra 4时,操作系统默认Python 3版本为3.5,低于Cassandra 4要求的最低Python 3.6版本,触发依赖校验失败。
- 后续连接器依赖拉取失败报错:存在两种可能,一是当前网络环境无法访问公共Maven仓库拉取依赖包,二是连接器与Spark的版本匹配规则不符,启动参数缺少必要配置项。
适配Python 3.9的环境配置方案
经测试可用的兼容版本组合
- JDK:8u202+ 或 11(推荐JDK 11,适配所有新组件)
- Scala版本:2.12.x(需与PySpark编译用Scala版本完全一致)
- Python版本:3.9.x
- Cassandra版本:4.0.3+(稳定版,原生支持Python 3.9)
- PySpark版本:3.2.4(基于Scala 2.12编译,支持Python 3.9)
- Spark Cassandra连接器版本:3.2.0(适配Spark 3.2.x、Cassandra 4.x,基于Scala 2.12编译)
具体安装步骤
- Cassandra 4.x安装
避免使用系统包管理器安装,直接下载官方二进制包解压使用,绕开系统Python版本限制:
- 下载Cassandra 4.0.x稳定版二进制包,解压到自定义目录
- 配置环境变量:
export CASSANDRA_HOME=你的解压路径、export PATH=$CASSANDRA_HOME/bin:$PATH - 指定cqlsh使用Python 3.9:修改
$CASSANDRA_HOME/bin/cqlsh文件头部的shebang为#!/usr/bin/env python3.9,或执行命令时指定PYTHON=python3.9 cqlsh即可 - 前台启动测试:
cassandra -f
- PySpark环境安装
直接通过pip安装对应版本即可:pip install pyspark==3.2.4
安装完成后执行pyspark --version,确认输出的Scala版本为2.12.x,匹配连接器要求。 - 连接测试
启动pyspark时使用如下参数:
pyspark \ --packages com.datastax.spark:spark-cassandra-connector_2.12:3.2.0 \ --conf spark.sql.extensions=com.datastax.spark.connector.CassandraSparkExtensions \ --conf spark.cassandra.connection.host=127.0.0.1
如网络无法拉取依赖,可配置国内公共Maven源,或提前手动下载连接器jar包到本地,启动时用--jars 本地jar包绝对路径替代--packages参数即可。
启动完成后执行测试代码验证连接:
# 替换为实际的键空间和表名 df = spark.read.format("org.apache.spark.sql.cassandra").options(table="test_table", keyspace="test_keyspace").load() df.show()
针对补充的PySpark 3.0.1环境适配说明
PySpark 3.0.1对应匹配的Spark Cassandra连接器版本为3.0.1,完整启动参数如下,依赖拉取失败的处理逻辑和上述一致:
pyspark \ --packages com.datastax.spark:spark-cassandra-connector_2.12:3.0.1 \ --conf spark.sql.extensions=com.datastax.spark.connector.CassandraSparkExtensions \ --conf spark.cassandra.connection.host=127.0.0.1
内容的提问来源于stack exchange,提问作者Coder94
相关产品推荐
相关产品推荐

