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 位)时存在问题。如果对象(在这种情况下为表-> 列)在工具中表示为字符串,我们没有问题。所以,我想我会用字符串数据类型定义一堆视图,然后在工具中使用它们。但是,不能在配置单元中插入以查看。所以,我可能需要考虑其他事情。以前用 oracle 和 teradata 做过这种方式。
我们可以让两个不同结构的表指向相同的底层 hdfs 内容吗?可能不会工作,因为存储模式的镶木地板存储。对不起,不是hadoop专家。
非常感谢您的时间。
解决方案
无法在 Hive 视图中插入数据,Hive 视图只是 Hive 表的投影(您可以将其视为预先保存的查询)。来自 Hive 文档
请注意,视图是没有关联存储的纯逻辑对象。(Hive 目前不支持物化视图。)当查询引用视图时,会评估视图的定义以生成一组行以供查询进一步处理。(这是一个概念性的描述;事实上,作为查询优化的一部分,Hive 可以将视图的定义与查询的定义结合起来,例如将过滤器从查询推送到视图中。)
推荐阅读
- prestashop - 如何永久修复 Pinterest“您提供的电子邮件与 Pinterest 标签不匹配”错误
- pyspark - 具有多个列表的数据框在 Spark 结构化流中的列中转换
- angular - 如何修复 npm 审计漏洞 Angular 12.0.3
- vb.net - 在VB中仅选择引号之间的文本
- json - 有没有办法一次在 BigQuery 中创建多个表?
- javascript - 有没有办法在里面发送数据
使用硒python标记?
- python - 在 Heroku 服务器上的 python 脚本上使用 Nordvpn premium
- angularjs - 如何在 angularjs 中访问 chrome.tabs.onRemoved
- java - 将一个短字符串从 C#(UWP) 传递到 Java 应用程序的快速方法
- javascript - JS将格式base64字符串值传递给C#