0
reduce関数で別のファイル(マップする入力ファイル以外)にアクセスしたいとします。これは可能ですか?hadoopのreduce関数でファイルを使用できますか?
reduce関数で別のファイル(マップする入力ファイル以外)にアクセスしたいとします。これは可能ですか?hadoopのreduce関数でファイルを使用できますか?
分散キャッシュをご覧ください。小さなファイルをマッパーやレデューサーに送ることができます。
仕事のためにあなたのメイン/ドライバ、設定ファイルでを(あなたは、Javaを使用している場合):
job.addCacheFile(new URI("path/to/file/inHadoop/file.txt#var"));
注:VARはマッパーでファイルにアクセスするために使用する変数の名前です。/reducerすなわちfn [1]を以下のコードで使用します。マッパーまたは減速で
、文脈からファイルを取得:
public void setup(Context context) throws IOException{
Configuration conf = context.getConfiguration();
URI[] cacheFiles = context.getCacheFiles();
String[] fn = cacheFiles[0].toString().split("#");
BufferedReader br = new BufferedReader(new FileReader(fn[1]));
String line = br.readLine();
//do something with line
}
注:cacheFiles [0]はあなたのメイン/ドライバから送信されたファイルを参照する