无法从映射器Hadoop打开HDFS文件

时间:2012-02-07 17:40:01

标签: java hadoop mapreduce

我搜索了很多但未找到解决此问题的方法。 实际上我想要访问的文件是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

提前致谢, 苛刻

2 个答案:

答案 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");
}