我想在我的mapper代码上生成HDFS路径。文件系统有我们可以从命令行做的所有方法,如put, get, mkdir等…如何在我的mapper或reducer代码中生成它的路径
我使用的是MR2
..
谢谢。
read input.txt
from 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"
您可以在Mapper/Reducer代码中使用setup()方法,并使用FileSystem API创建目录。如果你想检查目录/文件是否已经存在,那么使用FileSystem类中的"exists"方法。