2016-08-24 7 views
1

Я знаю, что HDFS пишет один раз и читает много раз.
Предположим, хочу ли я обновить файл в HDFS, есть ли способ сделать это?Как обновить файл в HDFS

Благодарим заранее!

ответ

1

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

hdfs dfs -appendToFile localfile /user/hadoop/hadoopfile 

Чтобы изменить какую-либо часть файла, который уже написан у вас есть три варианта:

  1. Получить файл из HDFS и изменить их содержание в местном

    hdfs dfs -copyToLocal /hdfs/source/path /localfs/destination/path

    или

    hdfs dfs -cat /hdfs/source/path | modify...

  2. Использование технологии обработки для обновления в качестве Map Reduce или Apache Spark, результат будет выглядеть как каталог файлов, и вы будете удалять старые файлы. Это должен быть лучший способ.

  3. Установите NFS или предохранитель, обе поддерживают операции добавления.

    NFS Gateway

    Hadoop Fuse: mountableHDFS, помогает позволяя HDFS быть установлен (на большинстве разновидностей Unix) в качестве стандартной файловой системы, используя команду монтирования. После того, как установлен, пользователь может работать на экземпляре HDFS с использованием стандартных Unix утилит, таких как 'LS', 'CD', 'ф', 'MKDIR', 'найти', 'Grep'

4

ОПЦИЯ1 :

Если вы просто хотите добавить в существующий файл

  1. echo "<Text to append>" | hdfs dfs -appendToFile - /user/hduser/myfile.txt ИЛИ

  2. hdfs dfs -appendToFile - /user/hduser/myfile.txt, а затем введите текст на терминале. После того, как вы закончите вводить затем нажмите «Ctrl + D»

option2:

Получить оригинальный файл из HDFS в локальной файловой системе, изменить его, а затем положить его обратно на HDFS.

  1. hdfs dfs -get /user/hduser/myfile.txt

  2. vi myfile.txt #or использовать любой другой инструмент, и изменить его

  3. hdfs dfs -put -f myfile.txt /user/hduser/myfile.txt

+0

Я знаю, что это почти год, но для тех, кто может искать ответ. В варианте 2, если файл уже существует, это приведет к ошибке. Сначала вам нужно перенести/переименовать/удалить файл с HDFS. вы можете переименовать его с помощью 'hdfs dfs -mv /home/hduser/myfile.txt/home/hduser/old_myfile.txt' – AgentBawls

+0

Или вы можете просто добавить флаг' -f' для команды 'put'. Обновленный ответ;) – daemon12

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