无法从映射程序Hadoop打开HDFS文件



我搜索了很多,但没有找到这个问题的解决方案。事实上,我想访问的文件在HDFS中,但不在输入路径(映射/减少作业的输入路径)中。我想从mapper访问它。输入路径中指定的hdfs路径完全可以从mapper访问,但其他hdfs文件则无法访问。

内侧映射器:-

FileSystem FS1=FileSystem.get(conf);
Path path=new Path(""+FS1.getHomeDirectory());
FSDataInputStream fsdis=FS1.open(path);

导致以下错误:java.io.io异常:无法打开filename/user/hadoop

提前感谢,刺耳的

我记得使用本教程可以获得类似的效果。你可以试试看,它和你写的只有一些区别,但它可能会有所帮助。。。

@编辑:啊,我刚刚注意到(看完评论),你正在尝试打开FS1.getHomeDirectory(),那是一个目录。我认为,您应该指向文件,而不是目录(您可以在链接教程的"从文件读取数据"下查看)。

你能尝试一次吗

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

相关内容

  • 没有找到相关文章

最新更新