我想在我的mapper代码上生成HDFS路径。 FileSystem拥有我们可以通过CLI执行的所有方法,例如put,get,mkdir等......但是当HDFS中已存在目录时,无法获取,如何在我的mapper或reducer代码中生成其路径。
我正在使用MR2
..
感谢。
答案 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类的方法。