如何在Databricks的SQL环境中访问GlobalTempView?
解决Databricks中全局临时视图的访问问题
核心问题:全局临时视图的命名空间
全局临时视图默认存储在global_temp系统命名空间下,不属于当前会话的默认命名空间,所以直接用视图名covid会提示找不到。
具体解决方法
方式1:指定命名空间直接访问
在SQL语句中添加global_temp.前缀,就能定位到全局临时视图:-- 查看所有全局临时视图 SHOW TABLES IN global_temp; -- 查询全局临时视图数据 SELECT * FROM global_temp.covid LIMIT 10;用Spark API访问时同样需要加前缀:
display(spark.sql('SELECT * FROM global_temp.covid LIMIT 10'))方式2:临时切换到global_temp命名空间
执行以下SQL切换默认命名空间,之后可直接使用视图名操作:USE global_temp; SHOW TABLES; -- 此时能看到covid视图 SELECT * FROM covid LIMIT 10;方式3:创建普通临时视图(替代全局视图)
如果不需要跨会话共享视图,直接创建普通临时视图即可,无需额外命名空间:df.createOrReplaceTempView("covid")之后直接用视图名就能访问:
SHOW TABLES; SELECT * FROM covid LIMIT 10;
关于“视图已存在”的提示
执行df.createGlobalTempView("covid")提示已存在,是因为之前的createOrReplaceGlobalTempView已经成功创建了视图,只是你没找对访问路径。createOrReplaceGlobalTempView本身支持覆盖已有视图,无需在意这个提示。
内容的提问来源于stack exchange,提问作者Ziggy
相关产品推荐
相关产品推荐

