Cloudera VM下如何启动指定版本Spark Shell?版本切换异常求助
嘿,我来帮你搞定这个Spark版本切换的问题!
首先咱们得理清问题根源:你执行spark-submit --version显示2.2.0,但spark-shell默认启动1.6.0,这说明系统里两个版本的Spark命令在PATH环境变量里的优先级不一样,或者你用SPARK_MAJOR_VERSION的方式不对——这个变量只需要填主版本号(比如2),不是完整的2.2.0。
下面给你几个实用的解决方案:
一、临时切换到Spark 2.2.0的spark-shell
方法1:直接调用指定版本的spark-shell
找到你Spark 2.2.0的安装目录(Cloudera的parcel一般在/opt/cloudera/parcels/下,比如/opt/cloudera/parcels/SPARK2-2.2.0-bin-hadoop2.6),直接执行完整路径的命令:
/opt/cloudera/parcels/SPARK2-2.2.0-bin-hadoop2.6/bin/spark-shell
记得把路径换成你实际的Spark 2.2.0安装路径哦。
方法2:正确使用SPARK_MAJOR_VERSION变量
Cloudera的Spark环境支持用这个变量快速切换主版本,执行以下命令就能启动Spark 2.x的shell:
SPARK_MAJOR_VERSION=2 spark-shell
二、永久设置默认Spark版本为2.2.0
方法1:修改个人环境变量(仅对当前用户生效)
编辑你的~/.bashrc或者~/.bash_profile文件,添加以下内容:
# 配置默认Spark版本为2.2.0 export SPARK_HOME=/opt/cloudera/parcels/SPARK2-2.2.0-bin-hadoop2.6 export PATH=$SPARK_HOME/bin:$PATH
保存后执行source ~/.bashrc(如果改的是bash_profile就执行source ~/.bash_profile),之后新开终端再启动spark-shell,默认就是2.2.0了。
方法2:用Cloudera的alternatives工具(系统级生效,所有用户都能用)
Cloudera通常用alternatives管理多版本软件,你可以这么操作:
# 先查看当前Spark的版本配置 sudo alternatives --display spark # 设置默认Spark版本为2.2.0 sudo alternatives --set spark /opt/cloudera/parcels/SPARK2-2.2.0-bin-hadoop2.6/bin/spark
输入密码确认后,整个系统的默认Spark命令就会指向2.2.0版本啦。
三、验证设置是否成功
完成设置后,执行以下命令检查:
spark-shell --version
如果输出显示2.2.0,就说明问题解决了!
内容的提问来源于stack exchange,提问作者Ganesh

