Запись файла в hdfs с помощью Java

Я хочу создать файл в HDFS и записать в него данные. Я использовал этот код:

Configuration config = new Configuration(); FileSystem fs = FileSystem.get(config); Path filenamePath = new Path("input.txt"); try { if (fs.exists(filenamePath)) { fs.delete(filenamePath, true); } FSDataOutputStream fin = fs.create(filenamePath); fin.writeUTF("hello"); fin.close(); } 

Он создает файл, но он ничего не пишет в нем. Я много искал, но ничего не нашел. В чем моя проблема? Нужно ли мне разрешение на запись в HDFS?

Благодарю.

альтернатива @ Tariq’s asnwer, вы можете передать URI при получении файловой системы

 Configuration configuration = new Configuration(); FileSystem hdfs = FileSystem.get( new URI( "hdfs://localhost:54310" ), configuration ); Path file = new Path("hdfs://localhost:54310/s2013/batch/table.html"); if ( hdfs.exists( file )) { hdfs.delete( file, true ); } OutputStream os = hdfs.create( file, new Progressable() { public void progress() { out.println("...bytes written: [ "+bytesWritten+" ]"); } }); BufferedWriter br = new BufferedWriter( new OutputStreamWriter( os, "UTF-8" ) ); br.write("Hello World"); br.close(); hdfs.close(); 

Либо укажите HADOOP_CONF_DIR среды HADOOP_CONF_DIR в папку конфигурации Hadoop или добавьте следующие 2 строки в код:

 config.addResource(new Path("/HADOOP_HOME/conf/core-site.xml")); config.addResource(new Path("/HADOOP_HOME/conf/hdfs-site.xml")); 

Если вы не добавите этого, ваш клиент попытается записать локальную FS, что приведет к исключению, исключенному из разрешения.

Пожалуйста, попробуйте подход ниже.

 FileSystem fs = path.getFileSystem(conf); SequenceFile.Writer inputWriter = new SequenceFile.Writer(fs, conf, path, LongWritable.class, MyWritable.class); inputWriter.append(new LongWritable(uniqueId++), new MyWritable(data)); inputWriter.close(); 
  • Есть ли верхняя граница для BigInteger?
  • Как я могу прослушивать нажатия клавиш (внутри Java Swing) для всех компонентов?
  • Программно изменить уровень журнала в Log4j2
  • Tomcat 7.0.73 не работает с java 9
  • Эквивалент waitForVisible / waitForElementPresent в тестах Selenium WebDriver с использованием Java?
  • Избавьтесь от уродливых утверждений
  • CSV-анализ в Java - рабочий пример ..?
  • jar не загружен. См. Раздел Servlet Spec 2.3, раздел 9.7.2. Класс нарушения: javax / servlet / Servlet.class
  • Загрузка ресурсов с помощью getClass (). GetResource ()
  • Добавление для BigDecimal
  • Является ли оценка короткого замыкания гарантированной в C ++, как в Java?
  • Interesting Posts

    Как я могу безопасно создать вложенный каталог в Python?

    c # covariant возвращаемые типы, использующие дженерики

    показать значок в панели действий / панели инструментов с помощью AppCompat-v7 21

    Поврежденные водой части, есть ли шанс на выздоровление?

    Как сделать поле электронной почты уникальным в модели Пользователь от contrib.auth в Django

    Может ли новая батарея разрядиться, если не используется

    Общие ограничения, где T: struct и где T: class

    Android: я не могу иметь ViewPager WRAP_CONTENT

    Почему, когда конструктор аннотируется с помощью @JsonCreator, его аргументы должны быть аннотированы с помощью @JsonProperty?

    .NET: Как вы получаете Тип нулевого объекта?

    Сжатие HTTP GET Response

    Обновление библиотеки поддержки 23.2.0 build bug

    Как распределить больше мощности процессора для моей (виртуальной системы на базе Ubuntu) в Windows 7?

    Обновление синтаксиса кэшированных данных CSS

    Восстановление данных для OS X

    Давайте будем гением компьютера.