我们可以插入Hive中的视图吗? 我过去使用Oracle和Teradata完成了这项工作。 但是,似乎没有在Hive中工作。
create table t2 (id int, key string, value string, ds string, hr string);
create view v2 as select id, key, value, ds, hr from t2;
insert into v2 values (1,'key1','value1','ds1','hr1')
***Error while compiling statement: FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: Unable to determine if null is encrypted: java.lang.NullPointerException***
这些似乎是某种更新支持。但是,我无法在插入视图中看到任何内容。 https://cwiki.apache.org/confluence/display/Hive/UpdatableViews
感谢您的反馈。说得通。需要此功能的原因是,我们使用的ETL工具在处理高精度小数(> 15位)方面存在问题。如果对象(本例中为table->列)在工具中表示为字符串,则我们不会遇到问题。所以,我认为我将使用字符串数据类型定义一组视图,并在工具中使用它。但是,无法在蜂巢中插入进行查看。所以,我可能需要考虑别的事情。之前用oracle和teradata做过这种方式。
我们可以将两个具有不同结构的表指向相同的底层hdfs内容吗?可能不会工作,因为存储架构的实木复合地板存储。对不起,不是hadoop专家。
非常感谢你的时间。
答案 0 :(得分:2)
无法在Hive视图中插入数据,Hive视图只是Hive表的投影(您可以将其视为预先存储的查询)。来自Hive文档
请注意,视图是纯逻辑对象,无关联 存储即可。 (目前不支持物化视图 Hive。)当查询引用视图时,视图的定义是 进行评估,以便生成一组行以供进一步处理 查询。 (这是一个概念性描述;事实上,作为一部分 查询优化,Hive可以将视图的定义与 查询,例如,将查询中的过滤器推送到视图中。)
答案 1 :(得分:1)
链接(https://cwiki.apache.org/confluence/display/Hive/UpdatableViews)似乎适用于建议的功能。
Views are read-only and may not be used as the target of LOAD/INSERT/ALTER.