插入Hive中的视图

时间:2018-05-04 05:41:50

标签: view hive

我们可以插入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专家。

非常感谢你的时间。

2 个答案:

答案 0 :(得分:2)

无法在Hive视图中插入数据,Hive视图只是Hive表的投影(您可以将其视为预先存储的查询)。来自Hive文档

  

请注意,视图是纯逻辑对象,无关联   存储即可。 (目前不支持物化视图   Hive。)当查询引用视图时,视图的定义是   进行评估,以便生成一组行以供进一步处理   查询。 (这是一个概念性描述;事实上,作为一部分   查询优化,Hive可以将视图的定义与   查询,例如,将查询中的过滤器推送到视图中。)

答案 1 :(得分:1)

链接(https://cwiki.apache.org/confluence/display/Hive/UpdatableViews)似乎适用于建议的功能。

根据official documentation

Views are read-only and may not be used as the target of LOAD/INSERT/ALTER.