我们可以在hadoop中使用reduce函数中的文件吗?

时间:2016-03-27 04:32:03

标签: hadoop mapreduce

我想在reduce函数中访问另一个文件(除了要映射的输入文件)。这可能吗 ?

1 个答案:

答案 0 :(得分:2)

查看分布式缓存。您可以将小文件发送到mapper或reducer。

(如果你使用Java)

在您的主/驱动程序中,设置作业文件:

job.addCacheFile(new URI("path/to/file/inHadoop/file.txt#var"));

注意: var 是用于在mapper / reducer中访问文件的变量名,即下面代码中的fn [1]。

在mapper或reducer中,从上下文中获取文件:

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] 是指您从主/驱动程序发送的文件

More information