首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算带有特定分区过滤器的hive表的大小?

如何计算带有特定分区过滤器的hive表的大小?
EN

Stack Overflow用户
提问于 2021-10-12 11:24:34
回答 1查看 46关注 0票数 0

背景。我可以计算我的hive分区表的大小,如下所示。<即查找所有分区的大小,然后求和所需partitions>的大小

代码语言:javascript
复制
hdfs dfs -du 'hdfs://localhost:9090/user/temp/warehouse/test.db/tbl1'
100   hdfs://localhost:9090/user/temp/warehouse/test.db/tbl1/dt=2021-10-06
200   hdfs://localhost:9090/user/temp/warehouse/test.db/tbl1/dt=2021-10-07
300   hdfs://localhost:9090/user/temp/warehouse/test.db/tbl1/dt=2021-10-08
400   hdfs://localhost:9090/user/temp/warehouse/test.db/tbl1/dt=2021-10-09
500   hdfs://localhost:9090/user/temp/warehouse/test.db/tbl1/dt=2021-10-10
600   hdfs://localhost:9090/user/temp/warehouse/test.db/tbl1/dt=2021-10-11

我想找出特定分区之间表的大小<例如dt >= 2021-10-09 >

即dt=2021-10-09到dt=2021-10-11之间的test.tbl1大小为= 400+500+600 = 1500字节

有没有办法在dfs -du阶段过滤掉结果以避免手动求和?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-17 08:10:21

使用POSIX awk (例如GNU或BSD awk),您可以使用gsub函数对每行的最后一个字段($NF)进行预处理,以仅保留日期。然后,当且仅当最后一个字段($1)在定义的范围内时,才能计算第一个字段($NF)的总和。dt >= 2021-10-09示例

代码语言:javascript
复制
$ hdfs dfs -du 'hdfs://localhost:9090/user/temp/warehouse/test.db/tbl1' |
  awk -v dtmin='2021-10-09' '
    {gsub(/.*=/,"",$NF)} $NF>=dtmin{sum+=$1} END{print sum}'
1500

对于封闭范围:

代码语言:javascript
复制
$ hdfs dfs -du 'hdfs://localhost:9090/user/temp/warehouse/test.db/tbl1' |
  awk -v dtmin='2021-10-06' -v dtmax='2021-10-08' '
    {gsub(/.*=/,"",$NF)} $NF>=dtmin && $NF<=dtmax{sum+=$1} END{print sum}'
600
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69539675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档