【问题标题】:Update delta records in hive table更新 hive 表中的增量记录
【发布时间】:2016-04-11 17:28:57
【问题描述】:

我有一个包含超过 TB 大小的历史数据的表,我每天都会收到 delta(更新的信息)记录,这些记录将以 GB 为单位并存储在 delta 表中。现在我想将增量记录与历史记录进行比较,并使用增量表中的最新数据更新历史表。

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

http://hortonworks.com/blog/four-step-strategy-incremental-updates-hive

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

【问题讨论】:

    标签: hadoop hive hiveql bigdata


    【解决方案1】:

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

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

    此外: 您是否有一个好的分区键,以便更新只需要在最新的分区上工作?最好执行以下操作:

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

    2. 假设 T2 是带有更新记录的新表。需要和T1一样分区

    3. 将 T1 和 T2 与键连接起来,并取出仅存在于 T1 中而不存在于 T2 中的那些。假设这张桌子是 T3
    4. 联合 T2 和 T3 以创建表 T4
    5. 从 T1 中删除之前占用的分区
    6. 将 T4 插入 T1

    请记住,这些操作可能不是原子操作,在第 5 步和第 6 步发生期间,在 T1 上运行的任何查询都可能有中间结果。

    【讨论】:

      猜你喜欢
      • 2017-08-12
      • 1970-01-01
      • 2017-05-12
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多