2017-08-17 41 views
0

在一個簡單的MapReduce程序中,有一個輸入文件,在分割每一行後,它將被映射。但是現在我想要讀取每一行,並在分割之後,通過不同的鍵將其映射兩次。閱讀一行和兩張地圖(使用context.write兩次)。 我看過: Running two mapper and two reducer for simple hadoop mapreduce jobs 回答:因此,只需將2個文件放入您的輸入目錄,以便您可以運行2個映射器。現在我應該把兩個相同的文件?在輸入文件和簡化器上對簡單的hadoop mapreduce作業運行兩個映射器

+0

我想你可以寫兩個單獨的映射器類,然後使用'MultipleInputs'(僅適用於'mapred')將文件傳遞給兩個不同的映射器。沒有嘗試過,所以無法確定。 – philantrovert

回答

0

在mapper中讀取行,將其拆分並傳遞到某處是沒有意義的。流程立刻:

void map(K key, Text value, Context ctx) { 
    String k1 = getKey1(value); 
    String k2 = getKey2(value); 
    map1(k1, value); 
    map2(k2, value); 
} 

void map1(...) { ... } 
void map2(...) { ... } 
相關問題