Databricks 协作集群下 Spark Session 管理方式及默认共享情况问询
Databricks 协作集群 Spark Session 管理逻辑
Databricks 对共享集群的资源和会话隔离做了分层设计,底层核心的 Spark Context 全局唯一,所有用户共享同一实例,而上层的 Spark Session 采用会话隔离的管理逻辑:
- 每个用户的独立 Notebook 会话、甚至同一用户打开的不同 Notebook,都会默认创建专属的独立 Spark Session,每个 Session 拥有独立的会话级配置、临时视图、自定义UDF、变量上下文,不同会话之间完全隔离,不会互相干扰。例如你在自己的 Notebook 中创建的临时视图
tmp_user_order,其他用户的 Notebook 完全无法访问。 - 同个 Notebook 内也可以通过
spark.newSession()接口手动创建新的 Spark Session,实现同 Notebook 内的多上下文隔离。 - 所有 Spark Session 底层都会复用集群全局唯一的 Spark Context,共享集群的CPU、内存等计算资源,不会重复创建 Spark Context 导致资源浪费。
- Spark Session 的生命周期和绑定的 Notebook 会话绑定:当 Notebook 与集群分离、或会话闲置超过超时阈值后,对应的 Spark Session 会被集群自动回收,释放会话级占用的资源。
默认状态下不同用户是否共享 Spark Session?
默认状态下不同用户不会共享同一个 Spark Session,所有会话默认是隔离的,只有在手动配置共享会话参数、或主动通过代码传递会话引用的特殊场景下,才会出现多用户共用同个 Spark Session 的情况。
内容的提问来源于stack exchange,提问作者Luiz Viola
相关产品推荐
相关产品推荐

