如何在Databricks同一集群的不同Notebook中复用缓存表?
Databricks跨Notebook复用缓存表方案
方案1:全局临时视图+缓存
全局临时视图的生命周期与集群绑定,同一集群下所有Notebook均可访问,搭配缓存后无需重复计算。
- 操作步骤:
- 在原Notebook中创建全局临时视图并缓存:
CREATE OR REPLACE GLOBAL TEMP VIEW work_details AS SELECT ...; CACHE TABLE global_temp.work_details; - 在其他Notebook中直接访问缓存的视图:
SELECT * FROM global_temp.work_details; -- 后续关联查询直接使用,缓存生效
- 在原Notebook中创建全局临时视图并缓存:
方案2:持久化外部表+缓存
将查询结果写入外部表,元数据存储在Metastore中,同一Workspace、同一集群的Notebook都能访问,缓存后集群内共享。
- 操作步骤:
- 在原Notebook中创建外部表并缓存:
CREATE TABLE work_details LOCATION '/dbfs/path/to/your/storage' -- 指定DBFS或云存储路径 AS SELECT ...; CACHE TABLE work_details; - 在其他Notebook中直接访问该表,缓存自动生效:
SELECT * FROM work_details; -- 关联查询直接使用,无需重新计算或缓存
- 在原Notebook中创建外部表并缓存:
方案3:Delta Lake表+缓存
如果需要ACID支持或数据更新能力,用Delta表存储结果后缓存,性能更稳定,跨Notebook复用逻辑一致。
- 操作步骤:
- 创建Delta表并缓存:
CREATE OR REPLACE TABLE work_details USING DELTA LOCATION '/dbfs/path/to/delta/storage' AS SELECT ...; CACHE TABLE work_details; - 其他Notebook直接访问Delta表,缓存生效:
SELECT * FROM work_details;
- 创建Delta表并缓存:
注意事项
- 全局临时视图的缓存随集群停止失效,适合临时共享场景;外部表/Delta表的数据会持久化,下次集群启动后重新缓存即可快速加载。
- 需监控集群内存占用,避免缓存因内存不足被自动清除。
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

