Я знаю, что HDFS пишет один раз и читает много раз.
Предположим, хочу ли я обновить файл в HDFS, есть ли способ сделать это?Как обновить файл в HDFS
Благодарим заранее!
Я знаю, что HDFS пишет один раз и читает много раз.
Предположим, хочу ли я обновить файл в HDFS, есть ли способ сделать это?Как обновить файл в HDFS
Благодарим заранее!
Если вы хотите добавить строки, вы должны поставить другой файл и конкатенации файлов:
hdfs dfs -appendToFile localfile /user/hadoop/hadoopfile
Чтобы изменить какую-либо часть файла, который уже написан у вас есть три варианта:
Получить файл из HDFS и изменить их содержание в местном
hdfs dfs -copyToLocal /hdfs/source/path /localfs/destination/path
или
hdfs dfs -cat /hdfs/source/path | modify...
Использование технологии обработки для обновления в качестве Map Reduce или Apache Spark, результат будет выглядеть как каталог файлов, и вы будете удалять старые файлы. Это должен быть лучший способ.
Установите NFS или предохранитель, обе поддерживают операции добавления.
Hadoop Fuse: mountableHDFS, помогает позволяя HDFS быть установлен (на большинстве разновидностей Unix) в качестве стандартной файловой системы, используя команду монтирования. После того, как установлен, пользователь может работать на экземпляре HDFS с использованием стандартных Unix утилит, таких как 'LS', 'CD', 'ф', 'MKDIR', 'найти', 'Grep'
ОПЦИЯ1 :
Если вы просто хотите добавить в существующий файл
echo "<Text to append>" | hdfs dfs -appendToFile - /user/hduser/myfile.txt
ИЛИ
hdfs dfs -appendToFile - /user/hduser/myfile.txt
, а затем введите текст на терминале. После того, как вы закончите вводить затем нажмите «Ctrl + D»
option2:
Получить оригинальный файл из HDFS в локальной файловой системе, изменить его, а затем положить его обратно на HDFS.
hdfs dfs -get /user/hduser/myfile.txt
vi myfile.txt
#or использовать любой другой инструмент, и изменить его
hdfs dfs -put -f myfile.txt /user/hduser/myfile.txt
Я знаю, что это почти год, но для тех, кто может искать ответ. В варианте 2, если файл уже существует, это приведет к ошибке. Сначала вам нужно перенести/переименовать/удалить файл с HDFS. вы можете переименовать его с помощью 'hdfs dfs -mv /home/hduser/myfile.txt/home/hduser/old_myfile.txt' – AgentBawls
Или вы можете просто добавить флаг' -f' для команды 'put'. Обновленный ответ;) – daemon12