2013-04-12 109 views
2

通常情況下,Hadoop示例定義瞭如何爲一個文件或多個文件進行字數統計,字數統計的結果將來自整個集合!hadoop,字段數在段落

我想做wordcount爲每個段落和存儲在像paragh(i)_wordcnt.txt分開的文件。

該怎麼辦? (這個問題是整個集映射器運行和減速機終於收集輸出

我可以做這樣的事情,如果我達到一個特定的標記寫入結果 !) 說,如果filecontent:

para1 
... 
para2 
... 
para3 
... 

能我喜歡看到Para1的wordcount的寫結果?或者其他的方式寫每對在單獨的文件怎麼辦這樣的序列

loop: 
    file(i)(parai)->Mapper->Reducer->multipleOutput(output-file(i))->writetofile(i); 
    i++; 
    goto loop; 

回答

0

我正在寫基本的基礎,因爲我們可以做到這一點。

我想我們必須運行鏈接的mapper和reducer來完成這個過程。

在第一個映射器中,您必須使用RecordReader並將其關鍵字設置爲整個段落。通過這種方式,我們將獲得與段落一樣多的鍵。然後,您需要使用減速器作爲identity reducer,並再次將減速器的輸出傳遞給一個將以段落爲關鍵字的新映射器。

既然你已經在你的新的mapper中有段落,你可以根據你的需要調整着名的word count code(在這裏只需用VALUES替換KEYS,所有的休息都是一樣的)。

由於您在縮減器中嵌套了映射器,因此在單獨的文件中獲取段落的字數將很容易。

請告訴我的方法是否不正確。