Hive - 生成序列或缺失数据

Hive - Generate sequence or missing data

我有一个 table(键,值),键在 00009999 之间,但它包含空洞和键的副本。
例如:(0001,3),(0003,2), (0001,6), ...

我想要的是 table (key, MAX(value)) (通常按键分组)但没有空洞(生成丢失的键)。
例如:(0000, 0), (0001, 6), (0002, 0), (0003, 2), ...

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

我将按以下方式执行此操作:

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