java – Hive:在主表上执行递增更新的最佳方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Hive:在主表上执行递增更新的最佳方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1248字,纯文字阅读大概需要2分钟。
内容图文
![java – Hive:在主表上执行递增更新的最佳方法](/upload/InfoBanner/zyjiaocheng/754/05e5009ff5484070a476068e98c99ae3.jpg)
所以我在Hive中有一个主表,它将存储我的所有数据.
我希望能够加载每月的增量数据更新
拥有大量数据的十亿行.会有新数据
以及更新的条目.
解决此问题的最佳方法是什么,我知道Hive最近升级并支持更新/插入/删除.
我一直在想的是以某种方式找到将要更新的条目并从主表中删除它们然后只插入新的增量更新.但是在尝试此操作后,插入速度非常快,但删除速度非常慢.
另一种方法是使用update语句执行某些操作以匹配主表和增量更新中的键值并更新其字段.我还没试过这个.这听起来也很痛苦,因为Hive必须逐个更新每个条目.
任何人都有任何想法,如何最有效和最有效地做到这一点?
我对Hive和数据库很新.
解决方法:
如果您无法使用MERGE在ACID模式下更新,则可以使用FULL OUTER JOIN进行更新.
要查找将要更新的所有条目,您需要使用旧数据加入增量数据:
insert overwrite target_data [partition() if applicable]
SELECT
--select new if exists, old if not exists
case when i.PK is not null then i.PK else t.PK end as PK,
case when i.PK is not null then i.COL1 else t.COL1 end as COL1,
...
case when i.PK is not null then i.COL_n else t.COL_n end as COL_n
FROM
target_data t --restrict partitions if applicable
FULL JOIN increment_data i on (t.PK=i.PK);
可以通过限制将被覆盖和连接的target_data中的分区来优化它.
此外,如果要使用新数据更新所有列,可以将此解决方案应用于UNION ALL row_number():https://stackoverflow.com/a/44755825/2700344
内容总结
以上是互联网集市为您收集整理的java – Hive:在主表上执行递增更新的最佳方法全部内容,希望文章能够帮你解决java – Hive:在主表上执行递增更新的最佳方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。