Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何更新现有SparkSession实例或在spark shell中创建新实例?_Scala_Apache Spark_Apache Spark Sql - Fatal编程技术网

Scala 如何更新现有SparkSession实例或在spark shell中创建新实例?

Scala 如何更新现有SparkSession实例或在spark shell中创建新实例?,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,当我启动sparkshell时,它会创建一个SparkSession的实例。但是,我应该按如下方式创建它: val spark = SparkSession.builder() .config("es.nodes",elasticHost) .config("es.port",elasticPort) .config("es.nodes.wan.only

当我启动
sparkshell
时,它会创建一个
SparkSession
的实例。但是,我应该按如下方式创建它:

val spark = SparkSession.builder()
                        .config("es.nodes",elasticHost)
                        .config("es.port",elasticPort)
                        .config("es.nodes.wan.only","true")
                        .appName("Test")
                        .getOrCreate()

如何更新
spark shell
中现有的
spark
,或创建如上所示的新实例?

您可以使用设置配置属性,或使用创建另一个
SparkSession
实例,然后设置属性

set(key:String,value:String):Unit设置给定的Spark运行时配置属性

newSession():SparkSession使用隔离的SQL配置启动新会话,临时表、注册函数被隔离,但共享基础SparkContext和缓存数据

这两种方法的工作原理(几乎)相同,不同之处在于您可以临时将属性设置为新值,并同时使用这两种
SparkSession
s

// hello property is not set
scala> spark.conf.getOption("hello")
res1: Option[String] = None

scala> spark.conf.set("hello", "world")

// hello property is set
scala> spark.conf.getOption("hello")
res3: Option[String] = Some(world)

// create a new SparkSession (so you'll have two at the same time)
val ns = spark.newSession

// hello is not set in a new session
scala> ns.conf.getOption("hello")
res4: Option[String] = None

ns.conf.set("hello", "hello in another session")

scala> ns.conf.getOption("hello")
res8: Option[String] = Some(hello in another session)

// the value of hello in the initial SparkSession remains unchanged
scala> spark.conf.getOption("hello")
res9: Option[String] = Some(world)

你可以做spark shell--conf blah=blah,如果这对你有用的话