Реализация перекрестного соединения в hadoop - PullRequest
3 голосов
/ 29 июня 2011

Я пытаюсь реализовать перекрестное соединение, используя hadoop в Java.Обе стороны соединения достаточно велики, и я не могу сохранить ни одну из них в памяти.Я пробовал несколько вещей, и хотя я понимаю, что PIG / Hive может быть проще, я хотел бы реализовать его на нативном Java.

Я думаю, CompositeInputFormat может быть способом сделать это, но я не смогнайти любой пример кода.

Я пытался отправить помеченные данные на SequenceFileInputFormat и устал использовать Reducer для объединения данных, но это тоже не сработало.(Я могу предоставить более подробную информацию, если это правильный путь).

Есть ли пример кода, на который я могу взглянуть?

1 Ответ

1 голос
/ 03 июля 2011

CompositeInputFormat требует, чтобы оба набора данных были отсортированы и разбиты по ключу соединения.

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

Вы правы в том, что в Pig / Hive делать такие соединения проще. Пример свиньи:

A = LOAD ...
B = LOAD ...
JOINED = JOIN A BY $0, B BY $0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...