Hadoop的Map和Reduce中能不能打开HDFS文件系统中的文件?

KevinWen 发布于 2014/04/21 15:33
阅读 760
收藏 0
我要做一个图片处理的程序,但是,如果一开始就把整个图片都读进去的话,那么这么大一块数据就要被传递几次(我现在编写的程序是传递给Map要传递一张图片的大小,Map传递给Reduce又要传递一张图片的大小,而Reduce里面的函数还要传递两三次),这样就很浪费时间,同时也浪费空间。我想的是直接把要处理文件的地址传递给Map,Map再把地址传递给Reduce,最后才在Reduce中的相关函数里再去打开文件?请问,Map和Reduce中能打开HDFS中的文件吗?如果能的话怎么打开?
加载中
0
震秦
震秦

可以的。但是你要确定你的MapReduce在一个进程打开文件不要超过操作系统maxOpenFile的限制。

public void map(K key, V value, Mapper.Context context)
            throws IOException, InterruptedException {
        FileSystem fs = FileSystem.get(context.getConfiguration());
        InputStream in = fs.open(path);
        //do something
 }



返回顶部
顶部