Come trovare la dimensione di un file HDFS? Quale comando dovrebbe essere usato per trovare la dimensione di qualsiasi file in HDFS.Come trovare la dimensione di un file HDFS
risposta
È possibile utilizzare il comando hadoop fs -ls
per elencare i file nella directory corrente e i relativi dettagli. La quinta colonna nell'output del comando contiene la dimensione del file in byte.
Ad es. comando hadoop fs -ls input
dà uscita seguente:
Found 1 items
-rw-r--r-- 1 hduser supergroup 45956 2012-07-19 20:57 /user/hduser/input/sou
La dimensione del file è sou
45956 byte.
Mi trovo anch'io ad usare lo hadoop fs -dus <path>
un ottimo affare. Ad esempio, se una directory su HDFS denominati "/ user/Frylock/ingresso" contiene 100 file ed è necessario la dimensione totale per tutti i file è possibile eseguire:
hadoop fs -dus /user/frylock/input
e si dovrebbe tornare la dimensione totale (in byte) di tutti i file nella directory "/ user/frylock/input".
Inoltre, tenere presente che HDFS memorizza i dati in modo ridondante in modo che la memoria fisica effettiva utilizzata da un file possa essere 3x o superiore a quanto riportato da hadoop fs -ls
e hadoop fs -dus
.
Oltre all'ultimo punto - il fattore di replica è il numero mostrato dopo i flag di autorizzazione e prima del proprietario (seconda colonna nella risposta di @ adhunavkulkarni) –
hadoop fs -du -s
Utilizzare 'hadoop fs -du -s -h/user/frylock/input' per un output molto più leggibile. – axiom
Se si desidera eseguire l'API, è possibile utilizzare il metodo 'getFileStatus()'.
Non va bene non restituisce la dimensione del file restituisce la dimensione del blocco allocata che non sarà zero per i file vuoti. Il valore predefinito è 67108864. – user1613360
Ho utilizzato la funzione seguente che mi ha aiutato a ottenere le dimensioni del file.
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;
}
}
Puoi dirmi se questo restituisce 7906, allora qual è la dimensione di quella directory? È in byte o in kbs? – retiremonk
vedere il comando sottostante con script awk per visualizzare la dimensione (in GB) di uscita filtrato in HDFS:
hadoop fs -du -s /data/ClientDataNew/**A*** | awk '{s+=$1} END {printf "%.3fGB\n", s/1000000000}'
uscita ---> 2.089GB
hadoop fs -du -s /data/ClientDataNew/**B*** | awk '{s+=$1} END {printf "%.3fG\n", s/1000000000}'
uscita ---> 1.724GB
hadoop fs -du -s /data/ClientDataNew/**C*** | awk '{s+=$1} END {printf "%.3fG\n", s/1000000000}'
uscita ---> 0.986GB
Come si può visualizzare la dimensione nella forma leggibile dall'uomo? -ls - lah non funziona qui –