更新 hive 表中的增量记录
Posted
技术标签:
【中文标题】更新 hive 表中的增量记录【英文标题】:Update delta records in hive table 【发布时间】:2016-04-11 17:28:57 【问题描述】:我有一个包含超过 TB 大小的历史数据的表,我每天都会收到 delta(更新的信息)记录,这些记录将以 GB 为单位并存储在 delta 表中。现在我想将增量记录与历史记录进行比较,并使用增量表中的最新数据更新历史表。
在 Hive 中执行此操作的最佳方法是什么,因为我要处理数百万行。我已经在网上搜索并找到了以下方法。
http://hortonworks.com/blog/four-step-strategy-incremental-updates-hive
但我认为这不是性能方面的最佳方法。
【问题讨论】:
【参考方案1】:在最新的 hive (0.14) 中,您可以进行更新。您需要将表格保持为 ORC 格式并按搜索键存储。
哦,我需要添加此链接以获取更多信息: Hive Transactions
此外: 您是否有一个好的分区键,以便更新只需要在最新的分区上工作?最好执行以下操作:
从所需分区获取数据到临时表 (T1)
假设 T2 是带有更新记录的新表。需要和T1一样分区
将 T1 和 T2 与键连接起来,并取出仅存在于 T1 中而不存在于 T2 中的那些。假设这张桌子是 T3 联合 T2 和 T3 以创建表 T4 从 T1 中删除之前占用的分区 将 T4 插入 T1请记住,这些操作可能不是原子操作,在第 5 步和第 6 步发生期间,在 T1 上运行的任何查询都可能有中间结果。
【讨论】:
以上是关于更新 hive 表中的增量记录的主要内容,如果未能解决你的问题,请参考以下文章