更新配置单元表中的增量记录

时间:2016-04-11 17:28:57

标签: hadoop hive hiveql bigdata

我有一张历史数据超过TB大小的表,我将每天接收delta(更新信息)记录,这些记录将以GB大小存储并存储在delta表中。现在,我想将增量记录与历史记录进行比较,并使用Delta表中的最新数据更新History表。

在Hive中执行此操作的最佳方法是什么,因为我将处理数百万行。我在网上搜索并找到了以下方法。

http://dev.mysql.com/doc/refman/5.7/en/mysqld-multi.html

但我认为这不是性能方面的最佳方法。

1 个答案:

答案 0 :(得分:0)

在最新的配置单元(0.14)中,您可以进行更新。您需要将表保持为ORC格式并通过搜索键进行存储。

哦,我需要添加此链接以获取更多信息: Hive Transactions

另外: 你有一个好的分区键,以便更新只需要在最新的分区上工作吗?做以下事情可能会很好:

  1. 从必需分区获取数据到临时表(T1)

  2. 假设T2是具有更新记录的新表。需要以与T1

  3. 相同的方式进行分区
  4. 使用密钥加入T1和T2,并选择仅存在于T1而不是T2中的密钥。我们假设这张桌子是T3
  5. Union T2和T3创建表T4
  6. 从T1
  7. 删除以前拍摄的分区
  8. 将T4插入T1
  9. 请记住,操作可能不是原子操作,在第5步和第6步发生时,在T1上运行的任何查询都可能有中间结果。