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