You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取Hive仓库中所有数据库的GB及字节单位大小

解决Hive仓库数据库大小统一转换为字节和GB的方法

方法一:直接获取原始字节数再计算(推荐)

不用-h参数,hdfs dfs -du会直接返回字节数,之后通过简单计算得到GB值,避免解析混合单位的麻烦,结果更准确:

hdfs dfs -du /user/hive/warehouse/ | awk '{
    bytes = $1;
    gb = bytes / 1024 / 1024 / 1024;
    printf "%-50s %12d bytes | %.2f GB\n", $2, bytes, gb
}'

脚本说明:

  • hdfs dfs -du /user/hive/warehouse/:输出每行格式为「字节数 目录路径」
  • awk处理逻辑:
    • 提取第一列的字节数$1
    • 计算GB值(1GB = 1024³字节)
    • 格式化输出:左对齐显示数据库路径,右对齐显示字节数,保留两位小数显示GB值

方法二:解析-h输出的混合单位(适合需要保留原单位参考的场景)

如果一定要基于hdfs dfs -du -h的输出转换,可使用以下bash脚本解析混合单位(MB/GB等)并统一转换为字节和GB:

hdfs dfs -du -h /user/hive/warehouse/ | awk '{
    size = $1;
    unit = substr(size, length(size));
    num = substr(size, 1, length(size)-1);
    
    if (unit == "K") bytes = num * 1024;
    else if (unit == "M") bytes = num * 1024 * 1024;
    else if (unit == "G") bytes = num * 1024 * 1024 * 1024;
    else if (unit == "T") bytes = num * 1024 * 1024 * 1024 * 1024;
    else bytes = num; # 无单位则为字节
    
    gb = bytes / 1024 / 1024 / 1024;
    printf "%-50s %12d bytes | %.2f GB\n", $2, bytes, gb
}'

脚本说明:

  • 提取-h输出的大小值和单位(比如2.5G提取2.5和G)
  • 根据单位转换为原始字节数
  • 再计算GB值并格式化输出

注意事项

  • 如果Hive仓库使用了不同的存储路径,替换/user/hive/warehouse/为你的实际路径
  • 若需要以1000为进制(比如商业GB=1000³字节),把脚本中的1024替换为1000即可

内容的提问来源于stack exchange,提问作者DariusB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 08:22:14