Zeppelin 0.10.0无法切换本地Spark 3.2.0报NoSuchMethodError问题问询
报错根因
你遇到的java.lang.NoSuchMethodError: scala.tools.nsc.Settings.usejavacp()报错是Scala版本不兼容导致的:Zeppelin内置的Spark解释器依赖是基于特定Scala版本编译的,和你本地Spark 3.2.0使用的Scala版本不一致时,就会出现类方法找不到的异常。Zeppelin 0.10.0和Spark 3.2.0本身是兼容的,按以下步骤调整配置即可解决:
解决方案步骤
- 第一步:对齐Scala大版本
Zeppelin 0.10.0默认提供Scala 2.11、Scala 2.12两个版本的Spark解释器,请确保你本地部署的Spark 3.2.0是基于Scala 2.12编译的版本,不要使用Scala 2.13编译的Spark 3.2.0安装包,否则会出现版本不匹配问题。 - 第二步:配置Zeppelin全局环境变量
不要仅在Web端的解释器页面修改SPARK_HOME,要先修改Zeppelin本地配置文件,找到安装目录下的conf/zeppelin-env.sh(Windows系统对应conf/zeppelin-env.cmd),添加以下配置:# 替换为你本地Spark 3.2.0的实际安装路径 export SPARK_HOME=/opt/spark-3.2.0-bin-scala2.12 # 和你本地Spark使用的Scala大版本保持一致 export SPARK_SCALA_VERSION=2.12 # 无Hive部署的场景下添加该配置,避免额外报错 export ZEPPELIN_SPARK_USEHIVECONTEXT=false - 第三步:调整Web端Spark解释器参数
进入Zeppelin网页端的「Interpreter」页面,找到Spark解释器,修改以下参数后保存:SPARK_HOME:填写你本地Spark 3.2.0的安装路径,不要留空spark.master:保留你设置的local[*]即可zeppelin.spark.useSparkSubmit:设置为false,禁止调用内置Spark提交脚本zeppelin.spark.useHiveContext:无Hive环境时设置为false
- 第四步:清理依赖缓存重启服务
重启Zeppelin服务前,删除以下目录的临时文件,避免内置旧版本Spark依赖残留:- Zeppelin安装目录下的
work文件夹下所有内容 - Zeppelin安装目录下的
interpreter/spark下的缓存临时文件
完成清理后重启Zeppelin服务即可。
- Zeppelin安装目录下的
内容的提问来源于stack exchange,提问作者Fatemeh Melika
相关产品推荐
相关产品推荐

