【发布时间】:2018-08-30 19:34:02
【问题描述】:
我们有一个具有三个不同 ID 的 Hive 表,它们都是可选的。在每一行中,必须提供三个 ID 中的至少一个。如果提供了多个 ID,则这会在多个 ID 之间建立等效性。
我们需要根据在任何行中建立的等效性为每一行分配一个唯一的主 ID。例如:
Line id1 id2 id3 masterID
--------------------------------------
(1) A1 M1
(2) A2 M1
(3) A3 M1
(4) A1 A2 M1
(5) A2 A3 M1
(6) B1 A2 M1
(7) C1 C3 M2
因为在第 4 行,A1 和 A2 都存在,我们知道这些 ID 是等价的。
同样,在第 5 行,A2 和 A3 都存在,我们知道这些 ID 也是等价的。
再次在第 6 行,我们有 B1 和 A2,所以它们也是等价的。
在第 7 行,我们有 C1 和 C3 之间的等价。
鉴于以上信息,A1、A2、A3 和 B1 都是等价的。因此,必须为所有包含这些 ID 的行分配相同的主 ID,因此我们为它们赋予了相同的主 ID(“M1”)。第 7 行收到一个自己的唯一 ID(“M2”),因为它的两个 ID 都不匹配。
我们如何编写 Hive 查询来以这种方式分配主 ID?如果 Hive 不是完成此任务的最佳工具,您能否建议一种方法来使用 Hadoop 生态系统中的其他工具来为这些行分配主 ID?
【问题讨论】:
标签: hadoop hive mapreduce hadoop2