2015-11-20 1 views
0

У меня есть два разных набора данных.Hadoop, соединяющий два разных набора данных с использованием java на конце Maper или Reducer

***Comments.csv:*** 

id 
userid 

***Posts.csv-*** 

id 
post_type 
creationdate 
score 
viewcount 
owneruserid 
title 
answercount 
commentcount 

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

Я знаю код для того, как Map Reduce работает с использованием одного файла. Я знаю, как установить несколько файлов для Job. Но я не знаю, как присоединиться к различным наборам данных на уровне Mapper.

Я не уверен, могу ли я присоединиться к этим двум наборам данных с одним Mapper.

public void map(Object key, Text value, Context context 
        ) throws IOException, InterruptedException { 
     String[] data = value.toString().split(","); 
     // Logic to write values to context 

    } 

MultipleInputs.addInputPath(job,new Path(args[0]),TextInputFormat.class,CommentsMapper.class); 
MultipleInputs.addInputPath(job,new Path(args[1]),TextInputFormat.class,PostsMapper.class); 

Мои запросы:

1. Map side join or Reduce side join : Which one is better?. 

2. Is it possible to use single Mapper or Reducer? If yes, how is it possible? 

предоставить мне материалы для достижения этой цели простым способом. Я рассмотрел вопросы Stackoverflow относительно нескольких файлов данных в Job, но формат ввода одинаковый для всех этих файлов. В моем случае формат ввода отличается.

Заранее спасибо.

+0

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

+0

Хорошо. Если это сторона редуктора, как ее достичь? У меня есть вопрос –

ответ

1

Чтобы выполнить свертка стороны присоединиться вы можете иметь ваши реализации карт испускают

(K,V) -> (JOIN_KEY,DATA).

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

Secondary Sort