如何更新现有的SparkSession实例或在Spark-shell中创建一个新的实例?



当我启动spark-shell时,它会创建一个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.conf.set设置配置属性,也可以使用SparkSession.newSession创建另一个SparkSession实例,然后设置属性。

set(键:字符串,值:字符串):单位设置给定的 Spark 运行时配置属性。

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

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

// 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)

相关内容

  • 没有找到相关文章

最新更新