Je dois copier un dossier du système de fichiers local vers HDFS. Je n'ai trouvé aucun exemple de déplacement d'un dossier (y compris de tous ses sous-dossiers) vers HDFS.
$ hadoop fs -copyFromLocal /home/ubuntu/Source-Folder-To-Copy HDFS-URI
Tu pourrais essayer:
hadoop fs -put /path/in/linux /hdfs/path
ou même
hadoop fs -copyFromLocal /path/in/linux /hdfs/path
Par défaut, put
et copyFromLocal
téléchargent les répertoires de manière récursive sur HDFS.
Si vous copiez un dossier à partir du répertoire local, il copiera le dossier avec tous ses sous-dossiers sur HDFS.
Pour copier un dossier de local à hdfs, vous pouvez utiliser
hadoop fs -put localpath
ou
hadoop fs -copyFromLocal localpath
ou
hadoop fs -put localpath hdfspath
ou
hadoop fs -copyFromLocal localpath hdfspath
Note:
Si vous ne spécifiez pas le chemin d'accès hdfs, la copie du dossier sera alors copiée sur hdfs avec le même nom que ce dossier.
Pour copier de hdfs au local
hadoop fs -get hdfspath localpath
hdfs dfs -put <localsrc> <dest>
Vérification de la source et de la cible avant de placer des fichiers dans HDFS
[cloudera@quickstart ~]$ 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
[cloudera@quickstart ~]$ hdfs dfs -ls
Found 1 items
drwxr-xr-x - cloudera cloudera 0 2017-11-14 00:45 .sparkStaging
Copier des fichiers HDFS à l’aide de la commande -put
ou -copyFromLocal
[cloudera@quickstart ~]$ hdfs dfs -put files/ files
Vérifier le résultat en HDFS
[cloudera@quickstart ~]$ 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
[cloudera@quickstart ~]$ 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
Vous pouvez utiliser :
1.LOADING DATA DE FICHIER LOCAL VERS HDFS
Syntaxe: $ hadoop fs –copyFromLocal
EX: $ hadoop fs –copyFromLocal localfile1 HDIR
2. Copie de données de HDFS à Local
Sys: $ hadoop fs –copyToLocal <nouveau nom de fichier>
EX: $ hadoop fs –copyToLocal hdfs/nom_fichier myunx;
Pour copier un fichier de dossier de local à hdfs, vous pouvez utiliser la commande ci-dessous
hadoop fs -put /path/localpath /path/hdfspath
ou
hadoop fs -copyFromLocal /path/localpath /path/hdfspath
Accédez au dossier ou au chemin "/ install/hadoop/datanode/bin" où vous pouvez exécuter vos commandes hadoop:
Pour placer les fichiers dans HDFS: Format: hadoop fs -put "Chemin système local"/nomfichier.csv "Chemin de destination HDFS"
par exemple) ./ hadoop fs -put /opt/csv/load.csv/user/load
Ici, le fichier /opt/csv/load.csv est le chemin du fichier source de mon système linux local.
/ user/load signifie le chemin de destination du cluster HDFS dans "hdfs: // hacluster/user/load"
Pour obtenir les fichiers de HDFS sur le système local: Format: hadoop fs -get "/ HDFSsourcefilepath" "/ localpath"
par exemple) hadoop fs - get /user/load/a.csv/opt/csv /
Après avoir exécuté la commande ci-dessus, le fichier a.csv de HDFS serait téléchargé dans le dossier/opt/csv du système linux local.
Ces fichiers téléchargés peuvent également être consultés via l'interface utilisateur Web HDFS NameNode.
En ligne de commande -
Hadoop fs -copyFromLocal
Hadoop fs -copyToLocal
Ou vous utilisez également la bibliothèque spark FileSystem pour obtenir ou mettre un fichier hdfs.
J'espère que c'est utile.