我搜索了很多但未找到解决此问题的方法。 实际上我想要访问的文件是HDFS,但不是输入路径(输入到map / reduce作业的路径)。我想从mapper访问它。 输入路径中指定的hdfs路径可以从mapper中完全访问,但其他hdfs文件不是。
INside mapper: -
FileSystem FS1=FileSystem.get(conf);
Path path=new Path(""+FS1.getHomeDirectory());
FSDataInputStream fsdis=FS1.open(path);
结果如下错误: java.io.IOException:无法打开filename / user / hadoop
提前致谢, 苛刻
答案 0 :(得分:1)
我记得使用this tutorial来获得类似的功能。你可以尝试一下,它和你写的只有一些区别,但它仍然可以帮助......
@Edit:啊,我刚刚注意到(在阅读评论后)您正试图打开FS1.getHomeDirectory()
并且这是一个目录。你应该指出文件而不是目录,我想(你可以在“从文件中读取数据”下的链接教程中查看)。
答案 1 :(得分:0)
你可以尝试一次吗
try {
FileSystem fs = FileSystem.get (new Configuration ());
FileStatus[] status = fs.listStatus (new Path ("hdfs://jp.seka.com:9000/user/jeka/in"));
for (int i=0;i < status.length;i++) {
BufferedReader br = new BufferedReader (new InputStreamReader (fs.open (status[i].getPath())));
String line;
line = br.readLine();
while (line != null) {
System.out.println (line);
line=br.readLine ();
}
}
} catch (Exception e) {
System.out.println("File not found");
}