Как найти размер файла HDFS? Какую команду следует использовать для определения размера любого файла в HDFS.
Как найти размер файла HDFS
Ответ 1
Вы можете использовать hadoop fs -ls
для отображения файлов в текущем каталоге, а также их данных. 5-й столбец вывода команды содержит размер файла в байтах.
Например, команда hadoop fs -ls input
вводит следующий вывод:
Found 1 items
-rw-r--r-- 1 hduser supergroup 45956 2012-07-19 20:57 /user/hduser/input/sou
Размер файла sou
составляет 45956 байт.
Ответ 2
Я также очень hadoop fs -dus <path>
использую hadoop fs -dus <path>
. Например, если каталог HDFS с именем "/user/frylock/input" содержит 100 файлов, и вам нужен общий размер для всех этих файлов, которые вы могли бы запустить:
hadoop fs -dus /user/frylock/input
и вы вернете общий размер (в байтах) всех файлов в каталоге "/user/frylock/input".
Кроме того, имейте в виду, что HDFS сохраняет данные избыточно, поэтому фактическое физическое хранилище, используемое файлом, может быть в 3 раза или больше, чем то, что сообщается с помощью hadoop fs -ls
и hadoop fs -dus
.
Ответ 3
Я использовал функцию ниже, которая помогла мне получить размер файла.
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;
}
}
Ответ 4
См. Приведенную ниже команду с awk-скриптом, чтобы увидеть размер (в GB) отфильтрованного вывода в HDFS:
hadoop fs -du -s /data/ClientDataNew/**A*** | awk '{s+=$1} END {printf "%.3fGB\n", s/1000000000}'
выход ---> 2,089 ГБ
hadoop fs -du -s /data/ClientDataNew/**B*** | awk '{s+=$1} END {printf "%.3fG\n", s/1000000000}'
выход ---> 1,724 ГБ
hadoop fs -du -s /data/ClientDataNew/**C*** | awk '{s+=$1} END {printf "%.3fG\n", s/1000000000}'
выход ---> 0.986GB
Ответ 5
Если вы хотите сделать это через API, вы можете использовать метод getFileStatus().
Ответ 6
hdfs dfs -du -s -h /directory
Это читаемая человеком версия, иначе она будет давать плохие единицы (чуть больше)