У нас есть таблица Hive с тремя разными идентификаторами, все необязательно. В каждой строке должен быть указан как минимум один из трех идентификаторов. Если указано более одного идентификатора, это устанавливает эквивалентность между несколькими идентификаторами.
Нам необходимо назначить уникальный мастер-идентификатор каждой строке на основе эквивалентностей, установленных в любой строке. Например:
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 присутствуют и А1, и А2, мы знаем, что эти идентификаторы эквивалентны.
Аналогично, в строке 5 присутствуют и A2, и A3, мы знаем, что эти идентификаторы также эквивалентны.
Снова в строке 6 у нас есть и B1, и A2, поэтому они также эквивалентны.
В строке 7 мы имеем эквивалент между C1 и C3.
Учитывая приведенную выше информацию, A1, A2, A3 и B1 все эквивалентны. Поэтому всем строкам, содержащим любой из этих идентификаторов, должен быть присвоен один и тот же главный идентификатор, поэтому мы присвоили им один и тот же главный идентификатор («M1»). Строка 7 получает уникальный собственный идентификатор ("M2"), поскольку ни один из его идентификаторов не совпадает ни с одним другим.
Как мы можем написать запрос Hive для назначения главных идентификаторов таким образом? И если Hive не лучший инструмент для достижения этой цели, можете ли вы предложить способ использования какого-либо другого инструмента в экосистеме Hadoop для назначения основных идентификаторов для этих строк?