2011-08-01 57 views
1

我想在Hadoop中的MapReduce作業的工作目錄中創建一個目錄。如何在Hadoop中創建和讀取目錄 - Mapreduce作業工作目錄

例如通過使用: 文件setupFolder = new File(setupFolderName); setupFolder.mkdirs();

在我的映射器類中寫入一些中間文件。這是否是正確的做法?

同樣在完成這項工作後,如果我願意,我將如何再次訪問這個目錄?

請指教。

回答

3

如果您正在使用java,您可以覆蓋setup方法並在那裏打開文件處理程序(並在cleanup中關閉它)。該句柄將供所有映射器使用。

我假設你沒有寫出所有的地圖輸出,而是一些調試/統計信息。有了這個處理程序可以讀取和寫入,因爲它顯示在這個例子中(http://wiki.apache.org/hadoop/HadoopDfsReadWriteExample

如果你想閱讀整個目錄,看看這個例子 https://sites.google.com/site/hadoopandhive/home/how-to-read-all-files-in-a-directory-in-hdfs-using-hadoop-filesystem-api

記住,你將無法依靠

數據寫入文件的順序。

+0

非常感謝:) –

+0

不客氣:D –

2

您可以重寫reducer類中的setupReduce(),使用mkdirs()創建文件夾並使用create()爲outputstream創建文件。

@Override 
    protected void setupReduce(Context context) throws IOException { 
     Configuration conf = context.getConfiguration(); 
     FileSystem fs = FileSystem.get(conf); 
     fs.mkdirs(new Path("your_path_here")); 
    } 
相關問題