Hadoop 合并配置单元表上的重复记录

Hadoop 合并配置单元表上的重复记录,hadoop,hive,hiveql,Hadoop,Hive,Hiveql,我有下表,其中包含增量更新。我需要编写一个普通的配置单元查询,将具有相同键值的行与最近的值合并 Key | A | B | C | Timestamp K1 | X | Null | Null | 2015-05-03 K1 | Null | Y | Z | 2015-05-02 K1 | Foo | Bar | Baz | 2015-05-01 想要获得: Key | A | B | C | Timestamp K1

我有下表,其中包含增量更新。我需要编写一个普通的配置单元查询,将具有相同键值的行与最近的值合并

Key |  A  |  B  |   C  |  Timestamp
K1  |  X  |  Null |  Null | 2015-05-03
K1 |  Null | Y  |    Z  |  2015-05-02
K1  |  Foo |  Bar  |  Baz  | 2015-05-01  
想要获得:

Key |  A  |  B  |   C  |  Timestamp
K1  | X  | Y  |  Z  |  2015-05-03
使用first_value()函数获取最后一个非空值。需要连接排序键,因为最后一个值仅与一个排序键一起工作

演示:

输出:

OK
key     a       b       c       timestamp
K1      X       Y       Z       2015-05-03
使用first_value()函数获取最后一个非空值。需要连接排序键,因为最后一个值仅与一个排序键一起工作

演示:

输出:

OK
key     a       b       c       timestamp
K1      X       Y       Z       2015-05-03

第一个想法-合并,但我不认为这是正确的如果列更少,您可以尝试,因为hive不支持再次调用CTE来创建新CTE,您必须创建一个新表或在修剪存储中。然后我有一些解决方案…第一个想法-合并,但我不认为这是正确的,如果列较少,您可以尝试,因为hive不支持再次调用CTE来创建新CTE,您必须创建一个新表或在修剪存储中。然后我有一些解决方案。。