从hdfs读取文件时出现FileNotFound异常

时间:2015-08-08 21:27:51

标签: file hadoop

我正在尝试使用以下代码从HDFS读取文件:

final Configuration configuration = new Configuration();

configuration.set("fs.defaultFS", "hdfs://localhost:8020/user/training/");

FileSystem fileSystem = FileSystem.get(configuration);
String filePath = "hdfs" + "://" + "localhost:8020" + "/user/training/test.txt";

File fileToProcess = new File(filePath); // path of file
FileInputStream fis = new FileInputStream(fileToProcess);

该程序的最后一个语句在异常后返回:

Exception in thread "main" java.io.FileNotFoundException:
hdfs:/localhost:8020/user/training/test.txt (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)

知道可能存在什么问题?文件出现在该位置。 我唯一可以注意的区别是:虽然我在URL中加了“//”,但最后一个语句在创建输入流时省略了一个斜杠。

此代码是从MR Driver类调用的。

2 个答案:

答案 0 :(得分:1)

Configuration configuration = new Configuration();
FileSystem fs = FileSystem.get(new URI("hdfs://localhost:8020"),
        configuration);
Path path = new Path("hdfs://localhost:8020/user/training/test.txt");
System.out.println(fs.exists(path));
FSDataInputStream fin  = fs.open(path);

答案 1 :(得分:0)

塔潘, 配置参数fs.defaultFS必须只表示Namenode主机名。为什么它具有HDFS目录本身的值。您可以尝试删除它吗?