2015-08-08 2 views
0

я пытаюсь прочитать файл из HDFS, используя следующий код:FileNotFound Исключение при чтении файла из 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.

+0

Удалось прочитать с использованием FSDataInputStream! –

ответ

0

Tapan, Параметр конфигурации fs.defaultFS должен указывать только имя узла Namenode. Зато оно имеет значение самого каталога HDFS. Можете ли вы его удалить?

+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); 
+0

Спасибо. Но я думаю, что чего-то не хватает. Это не сработало. –

+0

Он отлично работает со мной. Какая у вас ошибка. в противном случае вы должны добавить конфигурацию core-site.xml и hdfs-site.xml. conf.addResource (core-site.xml) и conf.addResource (hdfs-site.xml) –

+0

Конечно. Я попробую и дам вам знать. –

Смежные вопросы