MapReduce - 生成HDFS路径

时间:2015-09-24 08:21:52

标签: hadoop mapreduce hdfs

我想在我的mapper代码上生成HDFS路径。 FileSystem拥有我们可以通过CLI执行的所有方法,例如put,get,mkdir等......但是当HDFS中已存在目录时,无法获取,如何在我的mapper或reducer代码中生成其路径。

我正在使用MR2 ..

感谢。

2 个答案:

答案 0 :(得分:0)

input.txt

阅读HDFS
  public class HdfsRead {
        public static void main(String[] args) throws IOException {

            String uri = args[0];

            Configuration conf = new Configuration();
            FileSystem fs = FileSystem.get(URI.create(uri), conf);
            FSDataInputStream in = null ;
            try
            {byte [] buffer = new byte[256];
                in = fs.open(new Path(uri));
                    IOUtils.copyBytes(in, System.out, 4096, false);    

            }
            finally
            {
                IOUtils.closeStream(in);
            }   
        }
    }

检查文件是否已存在,将其删除

FileSystem fs = FileSystem.get(conf);
Path path =  new Path(args[0]);
if(fs.exists(path)){
    fs.delete(path);
}

commandline argument 
args[0] = "hdfs://localhost:9000/input.txt"

答案 1 :(得分:0)

您可以在Mapper / Reducer代码中使用setup()menthod,并使用FileSystem API创建目录。如果要检查目录/文件是否已存在,请使用" exists" FileSystem类的方法。