我想在Hadoop中的MapReduce作業的工作目錄中創建一個目錄。如何在Hadoop中創建和讀取目錄 - Mapreduce作業工作目錄
例如通過使用: 文件setupFolder = new File(setupFolderName); setupFolder.mkdirs();
在我的映射器類中寫入一些中間文件。這是否是正確的做法?
同樣在完成這項工作後,如果我願意,我將如何再次訪問這個目錄?
請指教。
我想在Hadoop中的MapReduce作業的工作目錄中創建一個目錄。如何在Hadoop中創建和讀取目錄 - Mapreduce作業工作目錄
例如通過使用: 文件setupFolder = new File(setupFolderName); setupFolder.mkdirs();
在我的映射器類中寫入一些中間文件。這是否是正確的做法?
同樣在完成這項工作後,如果我願意,我將如何再次訪問這個目錄?
請指教。
如果您正在使用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記住,你將無法依靠
數據寫入文件的順序。
您可以重寫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"));
}
非常感謝:) –
不客氣:D –