2012-07-25 62 views
0

我是hadoop mapreduce的新手。我想開發mapreduce代碼來轉換一個小文件的文本文件,但以前面的文件序列。這意味着在文件的實際順序,而不是類似於wordcount數據序列。所以可以給我什麼想法?如何在Hadoop中只包含案例?

+1

查詢不清楚。 – 2012-07-25 07:01:43

回答

1

僅有逐行讀取文件中的行和然後發射它作爲關鍵值< < LineNumber上,UPPERCASEOFLINE >>,所以每一行的上殼將成爲減速器的值(A列表只有一個元素) 。

現在,所有你需要做的是發出的值(每個鍵單線)作還原劑的關鍵,你可以使減速器爲NullWritable。

LineNumber在映射程序中,從1開始每增加1行輸入一次。 還重寫isSplitable()以返回false,以使一個文件完全由一個映射器處理。

+0

還需要編寫客戶記錄閱讀器嗎? – FourOfAKind 2012-10-07 21:45:17

0

我在通過hadoop map reduce程序將給定文本轉換爲大寫的同時面臨同樣的問題。

follwing是我的減速器代碼段

public static class UpperCaseReducer extends MapReduceBase implements Reducer<Text,Text,Text,Text> 
    { 
     public void reduce(Text key,Iterator<Text> value,OutputCollector<Text, Text> output,Reporter rporter) throws IOException 
     { 
      //while(value.hasNext()) 
      { 
       String NULL= new String(); 
       //System.out.println(value.toString()); 
       output.collect(value.next(),new Text("")); 
      } 
     } 
    } 

以我映射器代碼,我只讀取輸入的文本行,並通過線作爲其轉換成上殼體和使所述原始行鍵和轉換的文本作爲我的映射器方法的值作爲輸出。

相關問題