2010-04-09 71 views
3

我的reducer類使用TextOutputFormat(Job給出的默認OutputFormat)生成輸出。在MapReduce作業完成後,我喜歡使用此輸出來聚合輸出。除此之外,我喜歡用TextInputFormat寫出彙總信息,以便此進程的輸出可以在下一次MapReduce任務迭代中消耗。任何人都可以給我一個例子如何寫&與TextFormat閱讀?順便說一下,我使用TextFormat而不是Sequence的原因是互操作性。輸出應由任何軟件消耗。Hadoop 0.2:如何從TextOutputFormat讀取輸出?

回答

5

不排除序列文件;他們使連接MapReduce作業變得快速和容易,並且如果您需要它們以用於其他事情,您可以使用「hadoop fs -text 文件名」以文本格式輸出它們。

但是,回到原來的問題:要使用TextInputFormat,將其設置爲作業中的輸入格式,然後使用TextInputFormat.setInputPaths指定它應該用作輸入的文件。你的映射器的關鍵應該是一個LongWritable,並且它的值是一個Text。

對於使用TextOutputFormat作爲輸出,將其設置爲作業中的輸出格式,然後使用TextOuputFormat.setOutputPath指定輸出路徑。您的縮減器(或映射器,如果它是僅限地圖的作業)需要使用NullWritable作爲輸出鍵的類型,以便每行僅獲取一個值的文本表示形式,否則每行都將是鍵和由選項卡分隔的值(默認情況下,您可以通過將「mapred.textoutputformat.separator」設置爲不同的分隔符來更改此值)。