Hive - 生成序列或丢失数据

时间:2015-09-01 08:45:48

标签: hadoop hive hiveql

我有一个表(键,值),其中包含00009999之间的键,但它包含孔和键的副本。
例如:(0001,3),(0003,2), (0001,6), ...

我想要的是一个表(键,MAX(值))(通常按键分组)但没有空洞(生成缺失的键)。
例如:(0000, 0), (0001, 6), (0002, 0), (0003, 2), ...

有没有办法用Hive做到这一点?

1 个答案:

答案 0 :(得分:1)

我会用以下方式做到这一点:

  1. 创建一个包含单个列的表,其中包含值0000到9999,没有间隙。您可以通过从脚本本地创建文件并将其上传到HDFS来实现此目的,因为数据很小。如果您有大量ID,则可以将其作为Map Reduce作业完成。
  2. 从现有的Key,Value表格中生成最新的现有ID,例如Select Key, Max(Val) from table Group By Key
  3. 在步骤1中创建的ID列表与步骤2中的聚合键值对之间执行左外连接。
  4. 由于左外连接,原始表中的任何间隙都会对其键具有Null值。用0.替换它们。