Hive 配置单元视图不反映基表更改

Hive 配置单元视图不反映基表更改,hive,hiveql,ambari,hiveddl,Hive,Hiveql,Ambari,Hiveddl,我在蜂巢中有很多视图。大多数视图是使用模式select*而不是特定的列名创建的。当从基表中删除一列时,所有这些视图都开始抛出缺少的列错误。我甚至不能从myview中选择* 虽然我的原始视图创建文本是select*,但Hive似乎已将它们转换为扩展格式,如select col1、col2、col3等 是否有我应该启用的变通方法或设置,以便在不需要重新创建视图的情况下将更改反映在视图中。Hive正在使用存储的视图定义 在SQL:200n中,视图定义应该在创建时被冻结,因此如果视图定义为select*

我在蜂巢中有很多视图。大多数视图是使用模式
select*
而不是特定的列名创建的。当从基表中删除一列时,所有这些视图都开始抛出
缺少的列
错误。我甚至不能从myview中选择*

虽然我的原始视图创建文本是
select*
,但Hive似乎已将它们转换为扩展格式,如
select col1、col2、col3等


是否有我应该启用的变通方法或设置,以便在不需要重新创建视图的情况下将更改反映在视图中。

Hive正在使用存储的视图定义

在SQL:200n中,视图定义应该在创建时被冻结,因此如果视图定义为select*from t,其中t是一个包含两列a和b的表,那么以后从视图中选择*的请求应该只返回列a和b,即使以后向表中添加了新列c。大多数DBMS产品都正确地实现了这一点。详见本设计文件:

因此,您需要执行
alterview[db\u name.]VIEW\u name作为select\u语句反映DDL更改的命令<代码>选择时更改视图
更改视图的定义,视图必须存在。语法与
创建视图
类似,效果与
创建或替换视图
相同。请参阅此处的更多详细信息: