Zeppelin+Spark+Cassandra环境配置问题:Spark无法正常工作
解决Zeppelin Spark解释器配置失败及Spark-Cassandra Connector配置问题
一、修复Spark解释器路径错误
方案1:让Zeppelin使用本地安装的Spark 3.0.1
由于你通过Docker启动Zeppelin,容器默认无法直接访问Windows本地文件路径,需先挂载本地Spark目录:
- 启动Zeppelin容器时添加挂载参数(替换
C:/实际路径/to/spark-3.0.1-bin-hadoop2.7为你本地Spark的真实安装路径,选择与Spark 3.0.1兼容的Zeppelin版本,比如0.10.1):docker run -d -p 8080:8080 -v C:/实际路径/to/spark-3.0.1-bin-hadoop2.7:/opt/spark apache/zeppelin:0.10.1 - 进入Zeppelin Web界面的Spark解释器配置页:
- 打开
http://localhost:8080,点击右上角Interpreter - 找到
spark解释器并点击Edit - 修改核心配置项:
SPARK_HOME:设为容器内挂载路径/opt/sparkspark.submit.cmd:设为/opt/spark/bin/spark-submitspark.master:若用本地Spark,设为local[*]即可
- 打开
- 保存配置后重启Spark解释器,此时应能正常检测到Scala版本(Spark 3.0.1对应Scala 2.12.x)
方案2:使用Zeppelin容器自带的Spark
如果不想挂载本地Spark,可直接适配容器内的Spark版本:
- 进入Zeppelin容器:
docker exec -it <zeppelin-container-id> /bin/bash - 查看容器内Spark路径及版本:
ls /opt/spark,确认是否为3.3.1 - 回到Spark解释器配置页,修正
SPARK_HOME为/opt/spark,spark.submit.cmd为/opt/spark/bin/spark-submit - 若容器内Spark版本与本地Cassandra兼容,即可直接使用;不兼容则优先选择方案1
二、配置Spark-Cassandra Connector
1. 确定兼容版本
Spark 3.0.1对应Spark-Cassandra Connector版本为3.0.0(Connector主版本需与Spark主版本一致,Scala版本匹配2.12)
2. 添加Connector依赖
进入Spark解释器的Edit页面,找到dependencies配置项,添加Maven坐标:
com.datastax.spark:spark-cassandra-connector_2.12:3.0.0
可选添加Cassandra Driver依赖避免连接异常:
com.datastax.oss:java-driver-core:4.10.0
3. 添加Cassandra连接配置
在Spark解释器的spark.conf或spark.driver.extraJavaOptions中添加以下配置:
spark.cassandra.connection.host:Cassandra节点IP(本地Cassandra可设为host.docker.internal,让Docker容器访问本地服务)spark.cassandra.connection.port:默认9042(修改过端口则对应调整)- 若Cassandra开启认证,额外添加
spark.cassandra.auth.username和spark.cassandra.auth.password
4. 测试连接
创建Zeppelin Notebook,运行测试代码验证:
import org.apache.spark.sql.cassandra._ // 读取Cassandra表数据 val df = spark.read .format("org.apache.spark.sql.cassandra") .options(Map("table" -> "你的表名", "keyspace" -> "你的keyspace")) .load() df.show()
能正常输出表数据则说明配置成功。
内容的提问来源于stack exchange,提问作者Roman
相关产品推荐
相关产品推荐

