Databricks查询视图报TABLE_OR_VIEW_NOT_FOUND错误,求原因
问题原因分析
针对你遇到的问题,可能的原因有以下几点:
会话不一致导致临时视图不可见
Databricks的TEMPORARY VIEW是会话级别的对象,仅在创建它的Spark会话中可见。如果你在创建mytable的会话之外(比如新打开的Notebook、重启集群后的新会话)执行SELECT * FROM mytable,就会触发找不到视图的错误。而创建mynewview的语句是在mytable所在的同一会话中执行的,因此能正常访问视图。错误添加了catalog/schema前缀
临时视图不属于任何catalog或schema,是独立于命名空间的会话对象。如果查询时错误地给视图名加上了catalog或schema前缀(比如SELECT * FROM default.mytable),就会因为找不到对应命名空间下的表/视图而报错。而创建mynewview时直接使用视图名mytable,没有前缀,因此能正确匹配会话中的临时视图。视图名称大小写敏感问题
虽然Databricks SQL默认大小写不敏感,但如果创建视图时使用了带反引号的大小写名称,或者查询时用反引号包裹了错误的大小写(比如SELECT * FROMMyTable``),会导致匹配失败。而你创建mynewview时使用的是正确大小写的mytable,因此能正常访问。
内容的提问来源于stack exchange,提问作者Patterson
相关产品推荐
相关产品推荐

