Копирование файлов в Java (не удается создать файл) с помощью Hadoop - PullRequest
0 голосов
/ 12 октября 2018

В настоящее время я хочу скопировать файл из hdf на локальный компьютер.Я закончил большую часть работы с fileinputstream и fileoutputstream.Но затем я сталкиваюсь со следующей проблемой:

Исключение ввода-вывода JAVA.Mkdirs не удается создать файл

Я провел некоторое исследование и выяснил, что, поскольку я использую filesystem.create () (функция hadoop)

https://hadoop.apache.org/docs/current/api/org/apache/hadoop/fs/FileSystem.html#create(org.apache.hadoop.fs.Path,%20org.apache.hadoop.util.Progressable)

причина в следующем:

  1. Если я укажу путь к несуществующей папке, папка будет создана, а файл, который я скачаю, будет внутри.

  2. Если я установлю свой путь к существующей папке (скажем, в текущем каталоге), произойдет указанное выше исключение ввода-вывода.

Скажите, если я ужеполучить правильный путь и fileinputstream, что я должен использовать (лучше в библиотеке файловой системы), чтобы обойти эту проблему

мой код

//src and dst are the path input and output
Configuration conf = new Configuration();
FileSystem inFS = FileSystem.get(URI.create(src), conf);
FileSystem outFS = FileSystem.get(URI.create(dst), conf);
FSDataInputStream in = null;
FSDataOutputStream out = null;

in = inFS.open(new Path(src));

out = outFS.create(new Path(dst),
            new Progressable() {
        /*
         * Print a dot whenever 64 KB of data has been written to
         * the datanode pipeline.
         */
             public void progress() {
             System.out.print(".");
           }
    });

1 Ответ

0 голосов
/ 12 октября 2018

В классе «Файл» есть метод createNewFile (), который создаст новый файл, только если существует один объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...