根据API文档:
getActiveSession
()返回当前的活动SparkSession 线程,由构建器返回。
getDefaultSession
()返回 生成器返回的默认SparkSession。
我(很可能错误地)使用getActiveSession
在多个线程中的某些函数中检索了SparkSession
或SparkContext
。有时未定义activeSession(很可能是因为线程刚刚启动)。
有人可以解释两者之间的区别,还是API文档足够自解释?
此外,如果
,我什么时候使用getActiveSession
在99%的应用中,只有一个会话,并且
getDefaultSession
应该返回该会话
答案 0 :(得分:1)
ActiveSession
用于单线程,而DefaultSession
是全局的。默认情况下,DefaultSession
是主线程的ActiveSession
。SparkSession
对象共享相同的SparkContext
。但是它们可能具有不同的状态,例如SQL配置,临时表和注册的函数。In 99% of apps there is only one session
,实际上,您有99%以上是正确的。ActiveSession
?
DefaultSession
,则必须为每个数据框使用不同的名称,例如city_1
,city_2
。ActiveSession
(您可以通过SparkSession.newSession
创建新会话),可以注册所有具有相同名称city
的临时视图,一切都变得容易。SparkSession.active
不存在时,助手DefaultSession
可以帮助您落入ActiveSession