您的位置:首页 > 数据库

关于hive sql的一些小问题

2014-08-27 15:58 267 查看
今天写了一个统计脚本,shell为主体,调用hive接口,来实现hdfs上表的汇总统计计算。

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

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

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

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

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

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

1. 需要网络传输。

2. 传输是单机的执行。

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

--------

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

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

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

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

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

晚上吃个好的犒劳一下自己
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: