2015-06-13 5 views
0

Новичок здесь. Пытается запустить код из книги Натана Марза Big Data DFS Datastore с помощью Pail. Что я делаю не так? Попытка подключиться к виртуальной машине HDFS. Попробовал заменить hdfs файлом. Любая помощь оценивается.Невозможно создать файл, используя ведро DFS

public class AppTest 
{ 
    private App app = new App(); 
    private String path = "hdfs:////192.168.0.101:8080/mypail"; 

    @Before 
    public void init() throws IllegalArgumentException, IOException{ 
     FileSystem fs = FileSystem.get(new Configuration()); 
     fs.delete(new Path(path), true); 
    } 

    @Test public void testAppAccess() throws IOException{ 
     Pail pail = Pail.create(path); 
      TypedRecordOutputStream os = pail.openWrite(); 
      os.writeObject(new byte[] {1, 2, 3}); 
      os.writeObject(new byte[] {1, 2, 3, 4}); 
      os.writeObject(new byte[] {1, 2, 3, 4, 5}); 
      os.close(); 
    } 
} 

Получить ошибку -

java.lang.IllegalArgumentException: Wrong FS: hdfs:/192.168.0.101:8080/mypail, expected: file:/// 
    at org.apache.hadoop.fs.FileSystem.checkPath(FileSystem.java:645) 
    at org.apache.hadoop.fs.RawLocalFileSystem.pathToFile(RawLocalFileSystem.java:80) 
    at org.apache.hadoop.fs.RawLocalFileSystem.deprecatedGetFileStatus(RawLocalFileSystem.java:529) 
    at org.apache.hadoop.fs.RawLocalFileSystem.getFileLinkStatusInternal(RawLocalFileSystem.java:747) 

При замене HDFS с файлом в файле: ///

java.io.IOException: Mkdirs failed to create file:/192.168.0.101:8080/mypail (exists=false, cwd=file:/Users/joshi/git/projectcsr/projectcsr) 
    at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:442) 
    at 

ответ

0

я наткнулся на такой же проблемой, и я решил его! Вы должны добавить свой core-site.xml к объекту Hadoop Configuration, что-то, как это должно работать:

Configuration cfg = new Configuration(); 
Path core_site_path = new Path("path/to/your/core-site.xml"); 
cfg.addResource(core_site_path); 
FileSystem fs = FileSystem.get(cfg); 

Я думаю, вы могли бы сделать то же самое программно добавить свойство fs.defaultFS к cfg объекта

Источник: http://opensourceconnections.com/blog/2013/03/24/hdfs-debugging-wrong-fs-expected-file-exception/