2017-02-02 2 views
3

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

/foo/0000_0 
/foo/0000_1 
/bar/0000_0 

в файловую структуру, которая выглядит как этот

/foo/prefix1/prefix2-0000_0 
/foo/prefix1/prefix2-0000_1 
/bar/prefix1/prefix2-0000_0 

перед переносом этого из кластера (используя s3distcp). Я искал фюзеляж, но я не могу найти что-то, что позволило бы мне это сделать. Я не хочу переименовывать файл по файлу.

ответ

1

Во-первых, вам нужно создать вспомогательную директорию внутри/foo. Для этого используйте следующую команду

$ HDFS ДФС -mkdir/Foo/prefix1

это создаст подкаталог в/Foo. если вы хотите создать дополнительный подкаталог внутри префикса1, используйте эту же команду рекурсивно с обновленной структурой пути. Если вы используете более старую версию Hadoop (1.x), замените hdfs на hasoop.

Теперь вы можете перемещать файлы из/foo в/foo/prefix1, используя следующую команду. Здесь newfilename может быть любым именем, которое вы хотите передать вашему файлу.

$ HDFS ДФС -mv/Foo/имя файла/Foo/prefix1/newfilename

Надеется, что это ответ на ваш запрос

+0

Это требует мВ команды для каждого файла, хотя. –

+0

Если у вашего файла есть один и тот же префикс, вы используете подход, используя * like mv filename *, где filename является частью имени файла, которое является общим для всех, и * заменит часть, которая отличается. И если вы хотите переместить все файлы из папки В другую папку используйте mv */path/to/dest/folder /. Обратитесь к этому за дополнительной информацией. Http://askubuntu.com/questions/214560/how-to-move-multiple-files-at-once-to-a-specific-destination-directory –