关于hive sql的一些小问题

今天写了一个统计脚本,shell为主体,调用hive接口,来实现hdfs上表的汇总统计计算。


本来设想的很好,将各个表的统计维度抽取出来,然后各个表负责自己对应的统计字段,最后按照统计维度将结果group by出来。

我做事情习惯于分步实现,循环测试。在中间环节就遇到了一个小问题:

测试的时候没有统计最后结果,而是将各个表的union结果先select出来,放置在本地文件中,待脚本执行完,我可以查看文件,看看有什么问题。

但是mapreduce执行完就会卡在100%的位置,一卡就是1个小时。


观察输出的文件大小一直在增加,到8G左右时候还在涨。


意识到shell脚本远程调用hive接口,输出文件到本地这个过程本身就有问题:

1. 需要网络传输。

2. 传输是单机的执行。


平时这么做,因为数据量较小,完成的速度较快,于是没有察觉这个过程。

--------


修改脚本,将结果存入hdfs的临时表,取消传输到本地文件这一过程。

运行到最后的位置,如期,顺利完成。


查看整个hdfs表大小9.3G,试想,第一个环节再多卡一会,岂不是也能完成了?


9.3G也有点大,看了一下union的逻辑,中间有个子表可以事先做聚合,减少输出的数据量,经过聚合,将临时表的数据量缩减到1.7G。

完事!根据临时表的数据继续往下统计吧。


晚上吃个好的犒劳一下自己

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值