如何逐步更新表

时间:2013-09-20 03:58:50

标签: hadoop hive

我们正在使用Hive,并且数据流看起来像:

 SOURCE -> Flume -> S3 Buckets -> Script -> Hive Table

我们有一个看似类似的表,为简洁而截断:

 CREATE TABLE core_table (
       unique_id string
       update bigint
       other_data string
 )

现在我们也有了更新表 - 相同的结构core_update这个表可能包含重复的数据(例如重复的unique_id,但是增加bigint,它也会在文件后面订购)。

是否有一种很好的方法可以将core_update中的更新应用到core_table,同时向表中添加新的unique_id并更新基础数据。

- 注意:我试图避免看起来像这样的东西:MERGE - > DEDUP因为这个过程在较小的数据集上花了大约3个小时,而且我们有一个数据集是巨大的。所以做一些类似于插入排序的东西会很棒。

更新:由IBM http://ibm.co/15bMSxk发现以下博文:它说:

算法-2:更新到未分区的表

  • 步骤-1 运行合并连接查询输入:mainTable,用于保存合并记录的临时表名称(调用为stagingTable3),未分区的登台表名称(调用为stagingTable2),表主键,表字段 构建合并连接查询:

    插入覆盖表stagingTable3 选择“List tableFields”中的每一列 使用别名A添加字段名称 来自mainTable和别名A. 使用带别名B的stagingTable2应用左外连接 检查A.primaryKey = B.primaryKey的位置以及B.primaryKey为空的位置

    然后与从stagingTable2

  • 中选择的数据结合使用
  • 步骤2:使用下面给定的加载查询,通过从stagingTable3覆盖到mainTable来加载数据:

    load data inpath stagingTable3 overwrite into mainTable
    

然而,这仍然没有意义(或在我的解释中工作)。

0 个答案:

没有答案