Comment trouver la taille d'un fichier HDFS

Comment trouver la taille d'un fichier HDFS? Quelle commande doit être utilisée pour trouver la taille de n'importe quel fichier dans HDFS.

24
demandé sur rsp 2012-07-20 11:02:22
la source

5 ответов

Vous pouvez utiliser hadoop fs -ls commande pour lister les fichiers dans le répertoire courant ainsi que leurs détails. La 5ème colonne dans la sortie de commande contient la taille du fichier en octets.

Pour, par exemple, la commande hadoop fs -ls input donne la sortie suivante:

Found 1 items
-rw-r--r--   1 hduser supergroup      45956 2012-07-19 20:57 /user/hduser/input/sou

la taille du fichier sou est de 45956 octets.

17
répondu abhinavkulkarni 2012-07-20 12:12:30
la source

je trouve aussi moi-même à l'aide de hadoop fs -dus <path> beaucoup. Par exemple, si un répertoire sur HDFS nommé "/ user/frylock / input" contient 100 fichiers et que vous avez besoin de la taille totale de tous ces fichiers, vous pouvez lancer:

hadoop fs -dus /user/frylock/input

et vous obtiendriez la taille totale (en octets) de tous les fichiers du répertoire "/user/frylock/input".

aussi, gardez à l'esprit que HDFS stocke des données de façon redondante de sorte que le stockage physique réel utilisé par un fichier pourrait être 3x ou plus que ce qui est rapporté par hadoop fs -ls et hadoop fs -dus.

28
répondu Paul M 2012-07-20 14:25:10
la source

j'ai utilisé la fonction ci-dessous qui m'a aidé à obtenir la taille du fichier.

public class GetflStatus
{
    public long getflSize(String args) throws IOException, FileNotFoundException
    {
        Configuration config = new Configuration();
        Path path = new Path(args);
        FileSystem hdfs = path.getFileSystem(config);
        ContentSummary cSummary = hdfs.getContentSummary(path);
        long length = cSummary.getLength();
        return length;
    }
}
10
répondu user3315248 2014-03-18 20:51:57
la source

voir la commande ci-dessous avec awk script pour voir la taille (en GB) de la sortie filtrée en HDFS:

hadoop fs -du -s /data/ClientDataNew/**A***  | awk '{s+=} END {printf "%.3fGB\n", s/1000000000}'

sortie ---> 2.089 GO

hadoop fs -du -s /data/ClientDataNew/**B***  | awk '{s+=} END {printf "%.3fG\n", s/1000000000}'

sortie ---> 1.724 GO

hadoop fs -du -s /data/ClientDataNew/**C***  | awk '{s+=} END {printf  "%.3fG\n", s/1000000000}'

sortie ---> 0.986 GO

5
répondu Eddy Joseph 2016-05-10 18:04:33
la source

si vous voulez le faire via L'API, vous pouvez utiliser la méthode 'getFileStatus ()'.

2
répondu Tariq 2012-07-20 16:13:59
la source

Autres questions sur