EMR环境下已配置Spark,如何定位Scala并运行Scala REPL?
这种情况在EMR上挺常见的——Spark虽然已经配置好,但系统默认的PATH里没包含Scala的可执行文件,所以直接敲scala会提示找不到命令。别着急,咱们一步步来解决:
第一步:确认Spark的安装路径
EMR默认把Spark安装在/usr/lib/spark,你可以先验证一下环境变量:echo $SPARK_HOME如果输出了类似
/usr/lib/spark的路径,那直接用这个就行。要是没输出,手动查找Spark目录:find / -type d -name "spark" 2>/dev/null | grep -v "tmp"通常第一个结果就是你要的路径。
第二步:直接运行Spark自带的Scala REPL
Spark本身自带了Scala环境,它的可执行文件就在Spark的bin目录下。用绝对路径启动:$SPARK_HOME/bin/scala敲完这个命令,你应该就能看到Scala REPL的提示符(比如
scala>)了。第三步:让
scala命令全局可用(可选)
要是不想每次都输长路径,可以临时把Spark的bin目录加入系统PATH:export PATH=$SPARK_HOME/bin:$PATH这样当前会话里直接敲
scala就能启动REPL了。如果想让这个配置永久生效,编辑你的bash配置文件(比如
~/.bashrc或者~/.bash_profile),添加下面这行:export PATH=$SPARK_HOME/bin:$PATH保存后运行
source ~/.bashrc(或者对应的配置文件),下次登录就不用再重复设置了。如果还是找不到
scala可执行文件
你可以先找到spark-shell的位置:which spark-shell比如输出是
/usr/lib/spark/bin/spark-shell,那去这个bin目录里看看有没有scala文件:ls /usr/lib/spark/bin要是确实没有,说明你的Spark安装可能没包含Scala REPL,这种情况可以通过EMR的软件配置重新安装Scala包,或者用
yum install scala(如果EMR的yum源里有)来单独安装。
内容的提问来源于stack exchange,提问作者y2k-shubham

