我正在使用spark-shell学习Spark。
从终端运行spark-shell时,默认情况下已经提供了sparkContext。我想在spark上下文中添加一些手动设置(如setMaster(“local”)和setAppName(“KVApp”))。
尝试从火花壳执行此操作时,如下所示:
scala> var conf= new SparkConf().setMaster("local").setAppName("MyApp")
conf: org.apache.spark.SparkConf = org.apache.spark.SparkConf@55fb92f8
scala> val sc = new SparkContext(conf)
我收到以下错误:
org.apache.spark.SparkException: Only one SparkContext may be running
in this JVM (see SPARK-2243). To ignore this error, set spark.driver.allowMultipleContexts = true. The currently running SparkContext was created at:
org.apache.spark.SparkContext.<init>(SparkContext.scala:82)
org.apache.spark.repl.SparkILoop.createSparkContext(SparkILoop.scala:1017)
$iwC$$iwC.<init>(<console>:15)
$iwC.<init>(<console>:24)
<init>(<console>:26)
.<init>(<console>:30)
.<clinit>(<console>)
.<init>(<console>:7)
.<clinit>(<console>)
$print(<console>)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.apache.spark.repl.SparkIMain$ReadEvalPrint.call(SparkIMain.scala:1065)
org.apache.spark.repl.SparkIMain$Request.loadAndRun(SparkIMain.scala:1346)
org.apache.spark.repl.SparkIMain.loadAndRunReq$1(SparkIMain.scala:840)
org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:871)
这很明显,因为在启动spark shell时已经创建了spark上下文。
有没有办法用一些自定义属性来实现启动火花外壳?
答案 0 :(得分:1)
你可以像使用spark-submit
那样spark-shell --conf key=value --name MyShell
答案 1 :(得分:1)
你可以这样做:
spark-shell --master "..." --name "..."
您可以运行spark-shell --help
查看所有可用选项