Мне нужно скопировать папку из локальной файловой системы в HDFS. Я не смог найти ни одного примера перемещения папки (включая все ее подпапки) в HDFS
$ hadoop fs -copyFromLocal/home/ubuntu/Source-Folder-To-Copy HDFS-URI
Мне нужно скопировать папку из локальной файловой системы в HDFS. Я не смог найти ни одного примера перемещения папки (включая все ее подпапки) в HDFS
$ hadoop fs -copyFromLocal/home/ubuntu/Source-Folder-To-Copy HDFS-URI
Вы можете попробовать:
hadoop fs -put /path/in/linux /hdfs/path
или даже
hadoop fs -copyFromLocal /path/in/linux /hdfs/path
По умолчанию оба put
и copyFromLocal
будут загружать каталоги рекурсивно в HDFS.
Если вы скопируете папку из локальной, она скопирует папку со всеми ее подпапками в HDFS.
Для копирования папки из локальной в hdf можно использовать
hadoop fs -put localpath
или
hadoop fs -copyFromLocal localpath
или
hadoop fs -put localpath hdfspath
или
hadoop fs -copyFromLocal localpath hdfspath
Примечание:
Если вы не указали путь hdfs, то копия папки будет скопирована в hdfs с тем же именем этой папки.
Скопировать из hdfs в локальный
hadoop fs -get hdfspath localpath
hdfs dfs -put <localsrc> <dest>
Проверка источника и цели перед размещением файлов в HDFS
[[email protected] ~]$ ll files/
total 132
-rwxrwxr-x 1 cloudera cloudera 5387 Nov 14 06:33 cloudera-manager
-rwxrwxr-x 1 cloudera cloudera 9964 Nov 14 06:33 cm_api.py
-rw-rw-r-- 1 cloudera cloudera 664 Nov 14 06:33 derby.log
-rw-rw-r-- 1 cloudera cloudera 53655 Nov 14 06:33 enterprise-deployment.json
-rw-rw-r-- 1 cloudera cloudera 50515 Nov 14 06:33 express-deployment.json
[[email protected] ~]$ hdfs dfs -ls
Found 1 items
drwxr-xr-x - cloudera cloudera 0 2017-11-14 00:45 .sparkStaging
Скопируйте файлы HDFS с помощью команды -put
или -copyFromLocal
[[email protected] ~]$ hdfs dfs -put files/ files
Проверьте результат в HDFS
[[email protected] ~]$ hdfs dfs -ls
Found 2 items
drwxr-xr-x - cloudera cloudera 0 2017-11-14 00:45 .sparkStaging
drwxr-xr-x - cloudera cloudera 0 2017-11-14 06:34 files
[[email protected] ~]$ hdfs dfs -ls files
Found 5 items
-rw-r--r-- 1 cloudera cloudera 5387 2017-11-14 06:34 files/cloudera-manager
-rw-r--r-- 1 cloudera cloudera 9964 2017-11-14 06:34 files/cm_api.py
-rw-r--r-- 1 cloudera cloudera 664 2017-11-14 06:34 files/derby.log
-rw-r--r-- 1 cloudera cloudera 53655 2017-11-14 06:34 files/enterprise-deployment.json
-rw-r--r-- 1 cloudera cloudera 50515 2017-11-14 06:34 files/express-deployment.json
Вы можете использовать:
1. ЗАПИСЬ ДАННЫХ ИЗ ЛОКАЛЬНОГО ФАЙЛА В HDFS
Синтаксис: $hadoop fs -copyFromLocal
EX: $hadoop fs -copyFromLocal localfile1 HDIR
2. Копирование данных с HDFS на локальный
Sys: $hadoop fs -copyToLocal < новое имя файлa >
EX: $hadoop fs -copyToLocal hdfs/filename myunx;
Чтобы скопировать файл папки с локального на hdfs, вы можете использовать следующую команду
hadoop fs -put /path/localpath /path/hdfspath
или же
hadoop fs -copyFromLocal /path/localpath /path/hdfspath
Перейдите в папку "/install/hadoop/datanode/bin" или путь, где вы можете выполнить команды hadoop:
Чтобы разместить файлы в HDFS: Формат: hadoop fs -put "Путь к локальной системе"/filename.csv "Путь назначения HDFS"
например)./hadoop fs -put/opt/csv/load.csv/user/load
Здесь /opt/csv/load.csv - путь к исходному файлу из моей локальной системы Linux.
/user/load означает путь назначения кластера HDFS в "hdfs://hacluster/user/load"
Чтобы получить файлы из HDFS в локальную систему: Формат: hadoop fs -get "/HDFSsourcefilepath" "/localpath"
например) hadoop fs -get/user/load/a.csv/opt/csv/
После выполнения вышеупомянутой команды a.csv из HDFS будет загружен в папку /opt/csv в локальной системе Linux.
Эти загруженные файлы также можно увидеть через веб-интерфейс HDFS NameNode.
Из командной строки -
Hadoop FS -copyFromLocal
Hadoop FS -copyToLocal
Или вы также используете библиотеку spark FileSystem, чтобы получить или поместить файл hdfs.
Надеюсь, это полезно.