2011-01-18 109 views
1

我想在HDFS中創建一個文件,其中有一堆線,每個線都由不同的地圖調用生成。我不在乎線的順序,只是將它們全部添加到文件中。我該如何做到這一點?如何附加到hadoop中的文件?

如果這是不可能的,那麼是否有一種標準的方法來生成獨特的文件名,以將每行輸出放入單獨的文件中?

回答

1

目前沒有辦法在hadoop中追加到現有的文件,但這不是你想要做的事情。這聽起來像你想從Map Reduce作業輸出到單個文件,這是很有可能的。輸出文件的數量是(小於或等於)縮減器的數量,所以如果將縮減器的數量設置爲1,則會得到單個文件的輸出。

然而,在你去做那件事之前,想想這是你真正想要的。您將在您的管道中創建一個瓶頸,以便將所有數據通過單臺機器傳遞,從而減少這些瓶頸。在HDFS分佈式文件系統中,具有一個文件和多個文件的區別非常明顯。如果您想在羣集外部使用單個文件,則最好從文件系統工具中使用getmerge

+1

這個答案是錯誤的。過去兩個版本中HDFS-200已包含在CDH3中,HDFS-265包含在Apache Hadoop 0.21中。 – 2011-02-03 21:35:43

1

您的地圖和減少功能都應該輸出線。換句話說,你的reduce函數是一個並不多的傳遞函數。將減速器的數量設置爲1.輸出將是一個文件中所有行的列表。