Spark - SparkSession应该只有一个吗?

时间:2017-02-06 04:17:53

标签: apache-spark

在一些示例代码中,SparkSession实例是单例。 这是否意味着应该只有一个SparkSession实例? 如果有多个SparkSession会发生什么?他们(SparkSessions)可以互相交流吗?

2 个答案:

答案 0 :(得分:6)

每个JVM只能有一个SparkSession(和SparkContext)实例。您无法创建多个会话实例。

答案 1 :(得分:2)

SparkSession对象是一个Singleton,因此每个客户端只有一个。

您可以通过打开SparkShell轻松验证这一点:

  

阶> spark.toString

     

res7:String =   org.apache.spark.sql.SparkSession@d76a6bd

     

import org.apache.spark.sql.SparkSession

     

阶> :粘贴//输入   粘贴模式(ctrl-D完成)

     

val spark = SparkSession .builder()
  .appName(" SparkSessionZipsExample")。getOrCreate()

     

//退出粘贴模式,现在正在解释。

     

17/02/06 07:25:48 WARN SparkSession $ Builder:使用现有的   SparkSession,某些配置可能不会生效。火花:   org.apache.spark.sql.SparkSession =   org.apache.spark.sql.SparkSession@d76a6bd

     

阶> :粘贴//进入粘贴模式(ctrl-D完成)

     

val spark = SparkSession .builder()
  .appName(" SparkSessionZipsExample")。getOrCreate()

     

//退出粘贴模式,现在正在解释。

     

17/02/06 07:25:40 WARN SparkSession $ Builder:使用现有的   SparkSession,某些配置可能不会生效。火花:   org.apache.spark.sql.SparkSession =   org.apache.spark.sql.SparkSession@d76a6bd

正如您在所有三种情况中所看到的,我们正在找回相同的对象@ d76a6bd