当我启动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
中的现有spark-shell
或创建新的Token[] ps = new Token[lengthOfArray];
//main function and function call etc
public boolean find(Token token, int index) {
if (index < ps.length) {
if (ps[index] == token) {
System.out.println("Searching at " + index);
return true;
} else {
find(token, index++);
}
}
return false;
}
,如上所示?
答案 0 :(得分:1)
您可以使用SparkSession.conf.set设置配置属性,或使用SparkSession.newSession创建另一个SparkSession
实例,然后设置属性。
set(key:String,value:String):Unit 设置给定的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)