it-swarm.com.de

So ermitteln Sie die Größe einer HDFS-Datei

Wie finde ich die Größe einer HDFS-Datei? Mit welchem ​​Befehl sollte die Größe einer Datei in HDFS ermittelt werden.

25
priya

Mit dem Befehl hadoop fs -ls können Sie Dateien im aktuellen Verzeichnis sowie deren Details auflisten. Die fünfte Spalte in der Befehlsausgabe enthält die Dateigröße in Byte.

Für z. Der Befehl hadoop fs -ls input gibt folgende Ausgabe aus:

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

Die Größe der Datei sou beträgt 45956 Bytes.

17
abhinavkulkarni

Ich finde auch sehr viel mit hadoop fs -dus <path>. Wenn zum Beispiel ein Verzeichnis auf HDFS mit dem Namen "/ user/frylock/input" 100 Dateien enthält, benötigen Sie die Gesamtgröße aller Dateien, die Sie ausführen könnten:

hadoop fs -dus /user/frylock/input

und Sie erhalten die Gesamtgröße (in Byte) aller Dateien im Verzeichnis "/ user/frylock/input" zurück. 

Denken Sie auch daran, dass HDFS Daten redundant speichert, sodass der tatsächliche physische Speicher, den eine Datei belegt, dreimal so hoch sein kann wie der von hadoop fs -ls und hadoop fs -dus gemeldete Wert.

29
Paul M

Ich habe die folgende Funktion verwendet, um die Dateigröße zu ermitteln.

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;
    }
}
11
user3315248

Sehen Sie den Befehl unten mit dem awk-Skript, um die Größe (in GB) der gefilterten Ausgabe in HDFS anzuzeigen:

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

ausgabe ---> 2,089 GB

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

ausgang ---> 1.724GB

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

ausgang ---> 0,986 GB

7
Eddy Joseph

Wenn Sie dies über die API tun möchten, können Sie die Methode 'getFileStatus ()' verwenden.

2
Tariq
hdfs dfs -du -s -h /directory

Dies ist die von Menschen lesbare Version, sonst gibt es schlechte Einheiten (etwas größer)

0
Jason