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

How to initialise SparkContext with custom properties?

我正在使用 spark-shell.

学习 Spark

当运行终端的spark-shell时,已经默认提供了一个sparkContext。我想向 spark 上下文添加一些手动设置(如 setMaster("local") 和 setAppName("KVApp")).

当尝试从 spark shell 执行此操作时,如下所示:

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(SparkIMain.scala:840)
org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:871)

这很明显,因为在启动 spark 时已经创建了 spark 上下文 shell。

有什么方法可以通过一些自定义属性实现启动火花 shell?

你可以像使用 spark-submit

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

你可以这样做:

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

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