2014-10-14 3 views
0

У меня есть эта линия в моем коде:Distributedfilesystem использование класса локального вместо распределенных классов

DistributedFileSystem.get(conf).delete(new Path(new URI(otherArgs[1])), true);  

otherArgs[1] имеет следующее значение: hdfs://master:54310/input/results

я получаю это исключение:

Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS:hdfs://master:54310/input/results, expected: file:/// 
at org.apache.hadoop.fs.FileSystem.checkPath(FileSystem.java:354) 
at org.apache.hadoop.fs.RawLocalFileSystem.pathToFile(RawLocalFileSystem.java:55) 
at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:367) 
at org.apache.hadoop.fs.ChecksumFileSystem.delete(ChecksumFileSystem.java:430) 
at <package>.<classname>.main(Degree.java:137)  

Примечание: Я попытался использовать new Path(otherArgs[1]) без URI, но получил ту же ошибку!

Спасибо, -К

ответ

0

Оказалось, что я использовал свою банку, используя «hadoop -jar» вместо «банда хаоу». Все файлы conf правильные и на месте.

Проблема решена, но я до сих пор не знаю, почему использование «-jar» заставило его работать как локальный (псевдораспространенный)!

0

Похоже, что вы не установили fs.default.name в ядро-site.xml.

link проверить это

Если вы уже установили, что, убедитесь, что файлы конфигурации находятся в пути к классам

Вы также можете установить свойство fs.default.name через драйвер

conf.set("fs.default.name", "hdfs://yourserver:port"); 

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

  • Нет связанных вопросов^_^