2011-08-01 12 views
1

HadoopのMapReduceジョブの作業ディレクトリ内にディレクトリを作成したいとします。Hadoopでディレクトリを作成して読み込む方法 - Mapreduceジョブの作業ディレクトリ

例: ファイルsetupFolder =新しいファイル(setupFolderName); setupFolder.mkdirs();

私のマッパークラスでは、いくつかの中間ファイルを書き込むことができます。それは正しい方法ですか?

また、仕事の完了後、私はそうしたいと思ったら、このディレクトリに再びどのようにアクセスしますか?

アドバイスをしてください。

答えて

3

javaを使用している場合は、setupメソッドをオーバーライドしてファイルハンドラを開き(cleanupに閉じてください)。このハンドルはすべてのマッパーで使用できます。

ここではすべての地図出力を記述するのではなく、一部のデバッグ/統計情報を記述していると仮定しています。それは、この例ではショーであるとして、あなたが全体のディレクトリを読みたい場合は、このハンドラでは、あなたが依存することはできませんことを覚えておいてください。この例をチェックアウトhttps://sites.google.com/site/hadoopandhive/home/how-to-read-all-files-in-a-directory-in-hdfs-using-hadoop-filesystem-api

、(http://wiki.apache.org/hadoop/HadoopDfsReadWriteExample

読み書きできますファイルに書き込まれるデータの順序。

+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")); 
    } 
関連する問題