hdfs获取所有路径大小的脚本

AI提示词

帮我写个shell脚本,我会给你一个hdfs路径的txt, 你帮我拼接一下 txt路径如下: /user/hive/warehouse/ods_s.db/rt_ppdai_pfl_transfour_tb_order /user/hive/warehouse/ods_s.db/rt_ppdai_pfl_transfour_tb_orde1 /user/hive/warehouse/ods_s.db/rt_ppdai_pfl_transfour_tb_orde2

读取txt, hdfs dfs -D ipc.client.fallback-to-simple-auth-allowed=true -du -s -h hdfs://rtha

拼接到这个后面

得到的结果是

hdfs dfs -D ipc.client.fallback-to-simple-auth-allowed=true -du -s -h

hdfs://rtha/user/hive/warehouse/ods_s.db/rt_ppdai_pfl_transfour_tb_order

查询后,会得到这个结果(这个是在最后一行,因为hdfs有很多日志)

96.3 M 288.9 M hdfs://rtha/user/hive/warehouse/ods_s.db/rt_ppdai_pfl_transfour_tb_order

把这个换算成GB,给我,保留小数点4位 输出一个csv为路径名称,GB大小

脚本

bash 复制代码
#!/bin/bash

# 传入存放HDFS路径的文本文件,执行方式:bash hdfs_size_stat.sh hdfs_path_list.txt
txt_file="$1"

# 校验入参文件是否存在
if [ ! -f "${txt_file}" ];then
    echo "错误:文件 ${txt_file} 不存在"
    exit 1
fi

# 输出csv表头
echo "hdfs_path,size_gb" > hdfs_size_result.csv

# 循环读取每一行HDFS路径
while read -r hdfs_path; do
    # 跳过空行
    if [[ -z "${hdfs_path}" ]];then
        continue
    fi

    # 拼接完整hdfs命令执行
    full_cmd="hdfs dfs -D ipc.client.fallback-to-simple-auth-allowed=true -du -s -h hdfs://rtha${hdfs_path}"
    echo "正在统计:hdfs://rtha${hdfs_path}"

    # 执行命令,取最后一行有效结果
    res_line=$(${full_cmd} 2>/dev/null | tail -n 1)

    # 提取第一列大小字符串,例如 96.3 M
    size_str=$(echo "${res_line}" | awk '{print $1,$2}')
    unit=$(echo "${res_line}" | awk '{print $2}')
    num_val=$(echo "${res_line}" | awk '{print $1}')

    # 统一换算字节数
    case ${unit} in
        B) bytes=$(echo "${num_val}" | awk '{print $1}') ;;
        K) bytes=$(echo "${num_val} * 1024" | bc -l) ;;
        M) bytes=$(echo "${num_val} * 1024 * 1024" | bc -l) ;;
        G) bytes=$(echo "${num_val} * 1024 * 1024 * 1024" | bc -l) ;;
        T) bytes=$(echo "${num_val} * 1024 * 1024 * 1024 * 1024" | bc -l) ;;
        *) bytes=0 ;;
    esac

    # 字节换算GB,保留4位小数:1GB=1024^3 Byte
    gb_size=$(echo "scale=4; ${bytes} / (1024*1024*1024)" | bc -l)

    # 写入csv
    echo "hdfs://rtha${hdfs_path},${gb_size}" >> hdfs_size_result.csv

done < "${txt_file}"

echo "执行完成,结果文件:hdfs_size_result.csv"

使用方式

使用步骤

  1. 把上面脚本保存为 hdfs_size_stat.sh
  2. 准备你的路径文本 hdfs_path_list.txt,内容:

plaintext

复制代码
/user/hive/warehouse/ods_s.db/rt_ppdai_pfl_transfour_tb_order
/user/hive/warehouse/ods_s.db/rt_ppdai_pfl_transfour_tb_orde1
/user/hive/warehouse/ods_s.db/rt_ppdai_pfl_transfour_tb_orde2
  1. 授权 + 运行

bash

运行

复制代码
chmod +x hdfs_size_stat.sh
bash hdfs_size_stat.sh hdfs_path_list.txt

说明

  1. 自动拼接前缀 hdfs://rtha,带上你指定的 HDFS 参数;
  2. 兼容 B/K/M/G/T 单位自动换算 GB;
  3. 结果写入 hdfs_size_result.csv,格式:完整HDFS路径,大小(GB,四位小数)
  4. 屏蔽命令报错日志,只抓取-du -s -h最后一行容量数据;
  5. 自动跳过 txt 里的空白行。
相关推荐
小羊没烦恼!1 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
一隅论数智1 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
卷毛迷你猪1 天前
快速实验篇(A11)数据集成与多维分析:从单实验产出到跨实验宽表
hive·hadoop
尧炎科技1 天前
防潮抗变形,就选纯品梅花全桉多层板
大数据
程序员大阳1 天前
副队长大数据教程(5)--集群情况下虚拟机网络配置
大数据·集群·nat·网路
自由能燃气设备1 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远1 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
嘉立创FPC苗工1 天前
FPC与机器人的双向赋能,解锁智能装备进化新势能
大数据·人工智能·制造·fpc·电路板
AI职业加油站1 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
龙亘川1 天前
一网统管AI平台民生业务实践:基于城市数字底座赋能公积金业务服务升级
大数据·安全·智慧城市·开源软件·数据可视化·政务