Je sais. du -sh
dans les systèmes de fichiers Linux courants. Mais comment faire cela avec HDFS ?
-du -s (-dus est déprécié)
Je sais. du -sh
dans les systèmes de fichiers Linux courants. Mais comment faire cela avec HDFS ?
S'étendant jusqu'à Matt D et d'autres réponses, la commande peut être jusqu'à Apache Hadoop 3.0.0
hadoop fs -du [-s] [-h] [-v] [-x] URI [URI ...]
Il affiche les tailles des fichiers et des répertoires contenus dans le répertoire donné ou la longueur d'un fichier s'il s'agit simplement d'un fichier.
Options :
- Le site -s donnera lieu à un résumé agrégé des longueurs de fichiers qui est affiché, plutôt que les fichiers individuels. Sans l'option -s, le calcul est effectué en remontant d'un niveau à partir du chemin donné.
- Le site -h permet de formater la taille des fichiers dans un format lisible par l'homme mode (par exemple 64,0m au lieu de 67108864)
- Le site -v l'option affichera les noms des colonnes comme une ligne d'en-tête.
- Le site -x L'option exclure les instantanés du calcul du résultat. Sans l'option -x (par défaut), le résultat est toujours calculé à partir de tous les INodes, y compris tous les snapshots sous le chemin donné.
du
renvoie trois colonnes au format suivant : +-------------------------------------------------------------------+
| size | disk_space_consumed_with_all_replicas | full_path_name |
+-------------------------------------------------------------------+
hadoop fs -du /user/hadoop/dir1 \
/user/hadoop/file1 \
hdfs://nn.example.com/user/hadoop/dir1
Code de sortie : Renvoie 0 en cas de succès et -1 en cas d'erreur.
Lorsque l'on essaie de calculer le total d'un groupe particulier de fichiers dans un répertoire, la méthode de calcul de la valeur totale est la suivante -s
ne fonctionne pas (dans Hadoop 2.7.1). Par exemple :
Structure du répertoire :
some_dir
abc.txt
count1.txt
count2.txt
def.txt
Supposons que chaque fichier a une taille de 1 KB. Vous pouvez résumer le répertoire entier avec :
hdfs dfs -du -s some_dir
4096 some_dir
Cependant, si je veux obtenir la somme de tous les fichiers contenant "count", la commande est insuffisante.
hdfs dfs -du -s some_dir/count*
1024 some_dir/count1.txt
1024 some_dir/count2.txt
Pour contourner ce problème, je passe généralement la sortie par awk.
hdfs dfs -du some_dir/count* | awk '{ total+=$1 } END { print total }'
2048
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.