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]指的是你從你的主/驅動器發送的文件