前言
在正常的CDH6.3.0后台运行spark-shell进入scala交互界面报错。

报错信息:
报错信息如下:

Exception in thread "main" org.apache.spark.SparkException: Cluster deploy mode is not applicable to Spark shells.
    at org.apache.spark.deploy.SparkSubmit.error(SparkSubmit.scala:857)
    at org.apache.spark.deploy.SparkSubmit.prepareSubmitEnvironment(SparkSubmit.scala:292)
    at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:143)
    at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86)
    at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:924)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:933)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
 

解决方案
使用命令:

spark-shell --master yarn --deploy-mode client
 
运行成功进入交互页面

原因是因为spark2-shell运行在yarn上面,需要指定模式yarn-client,如果指定yarn-cluster,则会报错:

Error: Cluster deploy mode is not applicable to Spark shells.

因为spark-shell作为一个与用户交互的命令行,必须将Driver运行在本地,而不是yarn上。

其中的参数与提交Spark应用程序到yarn上用法一样。
CDH6.3.0 SPARK-SHELL启动报错_spark

启动时生成的都是这个ID: application_1628228012328_0003

CDH6.3.0 SPARK-SHELL启动报错_spark_02