Hadoop: интервалы и JOIN

Я новичок в Hadoop и в настоящее время пытаюсь объединить два источника данных, где ключом является интервал (например, [дата-начало/дата-конец] ). Например:

вход1:

20091001-20091002    A
20091011-20091104    B
20080111-20091103    C
(...)

вход2:

20090902-20091003    D
20081015-20091204    E
20040011-20050101    F
(...)

Я хотел бы найти все записи, в которых ключ1 перекрывает ключ2. Возможно ли это с помощью хаупа? Где найти пример реализации?

Спасибо.


person Pierre    schedule 02.12.2009    source источник
comment
Пьер, не уверен, понял ли ты это, но есть какие-нибудь идеи для этого в Свинье?   -  person Jilles    schedule 08.12.2010
comment
Решение было дано на Biostar: biostar.stackexchange.com/questions/8821   -  person Pierre    schedule 05.06.2011


Ответы (2)


Решение было дано на Biostar: http://biostar.stackexchange.com/questions/8821

person Pierre    schedule 05.06.2011

Я думаю, что все, что нужно, это ключевой класс, в котором hashCode() и equals() делают то, что вы от них хотите. Я подозреваю, что вы можете столкнуться с проблемой, когда A перекрывает B (т.е. A.equals(B) == true), B перекрывает C, но C не перекрывает A. Если вы реализуете такой метод equals(), вы вероятно получить странное поведение.

По сути, вы хотите сделать что-то вроде пробивных запросов в Дереве сегментов (т. е. для всех перекрывающихся интервалов). E для интервала (p1.start, p1.end), выполнять прямые запросы для p1.start и p1.end).

Но в принципе, нет, я не знаю правильного ответа на ваш вопрос. Но, возможно, запрос для "Дерево сегментов" hadoop будет чтобы вы начали.

person sfussenegger    schedule 02.12.2009