2014-09-22 3 views
0

У меня есть набор данных, как:Как найти родительский элемент из набора строк

a b c 
d c 
e d 
c g 
f a 
v w 
v m 
n m o 

Из этих данных мне нужно сгруппировать

{ a b c d e f g}  
{ m o v w } 

без особых итерации набора данных. Возможно ли это с помощью высокоуровневых функций SQL или какого-либо простого метода в HIVE/PIG (просто догадка)?

+0

«* или какой-либо простой метод в HIVE *» - Означает ли это, что вы используете Hive? –

+0

Фактически предполагается использовать Netezza. Но если в улье или какой-то новый подход к данным имеет решение, я переключусь на это. – Anoop

+0

Все современные СУБД имеют поддержку рекурсивных запросов. Стандарт SQL определяет «рекурсивные общие выражения таблицы» для этого. Я не знаю Netezza, может быть, это тоже помогает. –

ответ

0

Что вы пытаетесь сделать, так это найти все подключенные подграфы в ваших графиках всех узлов. Вы можете решить его, сначала построив график, а затем пройдя через все узлы, которые ищут подключенные подграфы.

Чтобы построить свой «большой» график, каждый узел является буквой, а две буквы связаны друг с другом, если они принадлежат к одному набору.

Затем перейдите по каждой букве, попробуйте перейти по графику, начиная с этого письма, и устранить каждую букву, которую вы видите. Время перезапуска вашего алгоритма поиска - это количество установленных вами параметров.

Учитывая сложность, построение графика зависит от количества установленных вами наборов, а также от количества разных букв. Для поиска по графику он линейный с вашим количеством букв и соединений. Конечно, в зависимости от того, как заданы ваши настройки и используемой структуры данных, вы можете сделать некоторую оптимизацию.

Дополнительная информация о wikipedia.

Смежные вопросы