You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同一Databricks集群不同笔记本能否共享缓存或持久化的DataFrame?

该需求完全可以实现,核心是通过全局临时视图绑定集群级缓存来实现跨会话(跨笔记本)的缓存共享,仅要求所有笔记本运行在同一个未重启的Databricks集群上即可。

具体操作步骤

步骤1:在生成缓存的笔记本中注册全局临时视图

首先在完成DataFrame计算的笔记本中,执行缓存并注册为集群可见的全局临时视图:

# 1. 读取/生成你的目标DataFrame
df = spark.read.table("your_source_table")

# 2. 执行缓存操作,触发action让缓存实际生效(cache本身是懒执行,不加action不会真的缓存)
cached_df = df.cache()
cached_df.count()

# 3. 注册为全局临时视图,所有同集群下的会话都可以访问
cached_df.createOrReplaceGlobalTempView("shared_cached_df")

步骤2:在其他笔记本中直接调用缓存数据

其他同集群下的笔记本,直接读取global_temp库下的全局临时视图即可,不需要重新计算源数据:

# 读取全局临时视图,拿到的就是已经缓存好的数据
shared_cached_df = spark.sql("SELECT * FROM global_temp.shared_cached_df")

# 直接执行后续操作即可
shared_cached_df.show()
关键注意事项
  • 不要使用createOrReplaceTempView注册视图,该方法生成的是会话级临时视图,仅当前笔记本可见,其他笔记本无法访问
  • 缓存注册前必须执行count()、show()这类action操作触发缓存实际写入,否则第一次调用视图时还是会重新计算源数据
  • 主动释放缓存的命令:spark.catalog.uncacheTable("global_temp.shared_cached_df")
  • 集群重启后所有全局临时视图和缓存都会被清空,需要重新执行缓存和注册流程
  • 全局临时视图的名称在整个集群内唯一,命名时注意不要和其他人注册的视图重名

内容的提问来源于stack exchange,提问作者Shad Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:36:04