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

Synapse Notebook中createGlobalTempView与createOrReplaceGlobalTempView的用途是什么?

Synapse Notebook 中 createGlobalTempView 与 createOrReplaceGlobalTempView 的用途及跨Notebook访问问题

用途说明

  • createGlobalTempView:创建全局临时视图,仅在视图不存在时生效,若同名视图已存在会直接报错。这类视图存储在系统内置的global_temp数据库下,生命周期绑定当前Notebook的Spark会话。
  • createOrReplaceGlobalTempView:创建或覆盖全局临时视图——如果同名视图已存在则直接替换,不存在则新建。同样归属global_temp数据库,生命周期与当前Spark会话绑定。

Synapse Spark池与Databricks集群的核心差异

你遇到的访问问题是两种平台运行机制不同导致的:

  • Databricks集群是长期运行的单一Spark应用,所有附加到该集群的Notebook共享同一个Spark上下文,因此全局临时视图可在集群内的Notebook间共享,直到集群重启或会话终止。
  • Synapse Spark池是按需分配资源的独立会话模式:哪怕是同一个Spark池,每个Notebook执行时都会启动独立的Spark应用(独立Spark上下文),会话完全隔离。所以一个Notebook中创建的全局临时视图,仅存在于自身的Spark应用生命周期内,其他Notebook(哪怕使用同一个Spark池)无法访问。

Synapse跨Notebook共享数据的替代方案

由于全局临时视图无法跨Notebook共享,可采用以下方式实现数据互通:

  1. 持久化到外部存储
    将数据写入ADLS Gen2、Blob Storage等外部存储,其他Notebook直接读取即可,推荐用Delta Lake或Parquet格式:
    # 写入数据到ADLS
    df.write.format("delta").mode("overwrite").save("abfss://container@storageaccount.dfs.core.windows.net/path/to/data")
    
    # 其他Notebook读取
    df = spark.read.format("delta").load("abfss://container@storageaccount.dfs.core.windows.net/path/to/data")
    
  2. 创建永久表/视图
    在Synapse Spark数据库中创建永久表或视图,这类对象存储在元数据中,所有有权限的Notebook都能访问:
    # 创建永久表
    df.write.mode("overwrite").saveAsTable("my_database.my_permanent_table")
    
    # 其他Notebook访问
    df = spark.sql("SELECT * FROM my_database.my_permanent_table")
    
  3. 借助Serverless SQL池
    若数据存于外部存储,可通过Serverless SQL池创建外部表,Spark Notebook和SQL脚本都能访问该表。

内容的提问来源于stack exchange,提问作者shanmukh SS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:52:11