如何使用自定义属性初始化SparkContext?

时间:2018-04-09 13:04:13

标签: java scala apache-spark jvm sparkcore

我正在使用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上下文。

有没有办法用一些自定义属性来实现启动火花外壳?

2 个答案:

答案 0 :(得分:1)

你可以像使用spark-submit

那样spark-shell --conf key=value --name MyShell

答案 1 :(得分:1)

你可以这样做:

spark-shell --master "..." --name "..."

您可以运行spark-shell --help查看所有可用选项

相关问题