统计HDFS中文件数量、大小、以及在某范围大小的文件数量

说明:统计HDFS文件数量大小,小于20M文件数量

1、HDFS 相关命令

# 统计文件大小
hdfs dfs -du -h / 

# 统计文件数量,返回的数据是目录个数,文件个数,文件总计大小,输入路径
hdfs dfs -count / 

#统计所有文件的信息,过滤文件夹, 只统计文件,因为使用-ls -R 之后,可以看到文件是”-“开头,文件夹是”d”开头
hdfs dfs -ls -R /path/data | grep ^- > /data.txt

可见,文件是”-“开头,文件夹是”d”开头:

2、取一些测试数据

使用:hdfs dfs -ls -R / |grep ^-

数据保存在 data.txt 文件中;

-rw-r--r--   3 root            supergroup          0 2018-08-31 10:36 /tmp/azkaban/mutiTest_3_1/_SUCCESS
-rw-r--r--   3 root            supergroup      70514 2018-08-31 10:36 /tmp/azkaban/mutiTest_3_1/part-00000-c-88980650a164-c000.snappy.parquet
-rw-r--r--   3 root            supergroup          0 2018-08-31 10:37 /tmp/azkaban/mutiTest_3_2/_SUCCESS
-rw-r--r--   3 root            supergroup     160152 2018-08-31 10:37 /tmp/azkaban/mutiTest_3_2/part-00000-f74649c51ec416add-c000.snappy.parquet
-rw-r--r--   3 root            supergroup          0 2018-08-31 10:38 /tmp/azkaban/mutiTest_3_3/1/_SUCCESS
-rw-r--r--   3 root            supergroup     200425 2018-08-31 10:38 /tmp/azkaban/mutiTest_3_3/1/part-00000-9cd-8ff3-5755f0d74277-c000.snappy.parquet
-rw-r--r--   3 root            supergroup          0 2018-08-31 10:38 /tmp/azkaban/mutiTest_3_3/2/_SUCCESS
-rw-r--r--   3 root            supergroup        523 2018-08-31 10:38 /tmp/azkaban/mutiTest_3_3/2/part-00000-80c5c6-f830a3dabf10-c000.snappy.parquet
-rw-r--r--   3 root            supergroup          0 2018-08-31 10:36 /tmp/azkaban/mutiTest_4_1/_SUCCESS
-rw-r--r--   3 root            supergroup      70514 2018-08-31 10:36 /tmp/azkaban/mutiTest_4_1/part-00000-be924497-0b11-44a2f6898-c000.snappy.parquet
-rw-r--r--   3 root            supergroup          0 2018-08-31 10:37 /tmp/azkaban/mutiTest_4_2/_SUCCESS
-rw-r--r--   3 root            supergroup     160152 2018-08-31 10:37 /tmp/azkaban/mutiTest_4_2/part-00000-f2e48a28-5463-43ee-b92f-c000.snappy.parquet
-rw-r--r--   3 root            supergroup          0 2018-08-31 10:38 /tmp/azkaban/mutiTest_4_3/1/_SUCCESS
-rw-r--r--   3 root            supergroup     200425 2018-08-31 10:38 /tmp/azkaban/mutiTest_4_3/1/part-00000-00d149ae-c471-9d-c000.snappy.parquet
-rw-r--r--   3 root            supergroup          0 2018-08-31 10:38 /tmp/azkaban/mutiTest_4_3/2/_SUCCESS
-rw-r--r--   3 root            supergroup        523 2018-08-31 10:38 /tmp/azkaban/mutiTest_4_3/2/part-00000-6e4ea458-f4df-47aa-c000.snappy.parquet
-rw-r--r--   3 root            supergroup          0 2018-09-14 10:35 /tmp/casted-abalone/_SUCCESS
-rw-r--r--   3 root            supergroup      65512 2018-09-14 10:35 /tmp/casted-abalone/part-00000-40e7daf1-6a4b-4512-a776000.snappy.parquet
-rw-r--r--   3 root            supergroup     203890 2018-09-12 14:22 /tmp/data.csv
-rwxrwxrwx   3 root            supergroup    2234332 2018-09-11 17:19 /tmp/directory/application_11111111111_0158
-rwxrwxrwx   3 root            supergroup    2278733 2018-09-11 17:22 /tmp/directory/application_11111111111_0159
-rwxrwxrwx   3 root            supergroup    2285701 2018-09-11 17:23 /tmp/directory/application_11111111111_0160
-rwxrwxrwx   3 root            supergroup    2263181 2018-09-12 08:55 /tmp/directory/application_11111111111_0161
-rwxrwxrwx   3 root            supergroup    2508930 2018-09-12 10:25 /tmp/directory/application_11111111111_0162
-rwxrwxrwx   3 root            supergroup    2657162 2018-09-12 10:57 /tmp/directory/application_11111111111_0163
-rwxrwxrwx   3 root            supergroup  789259696 2018-09-12 15:19 /tmp/directory/application_11111111111_0164
-rwxrwxrwx   3 root            supergroup  799593790 2018-09-12 15:52 /tmp/directory/application_111111111111_0165
-rwxrwxrwx   3 root            supergroup  800492474 2018-09-12 16:21 /tmp/directory/application_11111111111_0166
-rwxrwxrwx   3 root            supergroup     186277 2018-09-12 16:29 /tmp/directory/application_11111111111_0167
-rwxrwxrwx   3 root            supergroup     193286 2018-09-12 16:32 /tmp/directory/application_11111111111_0168

3、使用python脚本分析

安装numpy和pandas模块:

> pip3 install -i https://pypi.doubanio.com/simple/  numpy
> pip3 install -i https://pypi.doubanio.com/simple/ pandas

脚本内容:

#!/usr/bin/env python
# encoding: utf-8

import pandas as pd

# data.txt中有8列数据
file = 'data.txt'

# 统计数据一共8列
df = pd.read_table(file, delim_whitespace=True, names=[1, 2, 3, 4, 5, 6, 7, 8])
print('文件总行数:{}'.format(len(df)))

# 第五列是大小,取小于20M(换算成b)的文件数据
df1 = df[df[5] < 20971520]

# 统计数量
print('小于20M的文件数:{}'.format(len(df1)))

运行结果:

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值