关于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。
完事!根据临时表的数据继续往下统计吧。
晚上吃个好的犒劳一下自己
本来设想的很好,将各个表的统计维度抽取出来,然后各个表负责自己对应的统计字段,最后按照统计维度将结果group by出来。
我做事情习惯于分步实现,循环测试。在中间环节就遇到了一个小问题:
测试的时候没有统计最后结果,而是将各个表的union结果先select出来,放置在本地文件中,待脚本执行完,我可以查看文件,看看有什么问题。
但是mapreduce执行完就会卡在100%的位置,一卡就是1个小时。
观察输出的文件大小一直在增加,到8G左右时候还在涨。
意识到shell脚本远程调用hive接口,输出文件到本地这个过程本身就有问题:
1. 需要网络传输。
2. 传输是单机的执行。
平时这么做,因为数据量较小,完成的速度较快,于是没有察觉这个过程。
--------
修改脚本,将结果存入hdfs的临时表,取消传输到本地文件这一过程。
运行到最后的位置,如期,顺利完成。
查看整个hdfs表大小9.3G,试想,第一个环节再多卡一会,岂不是也能完成了?
9.3G也有点大,看了一下union的逻辑,中间有个子表可以事先做聚合,减少输出的数据量,经过聚合,将临时表的数据量缩减到1.7G。
完事!根据临时表的数据继续往下统计吧。
晚上吃个好的犒劳一下自己
相关文章推荐
- 总结一些关于操作数据库是sql语句还是存储过程问题
- 关于设计SQL表的一些问题
- Mybatis:关于动态生成sql语句的一些问题
- 关于Alexa排行和搜索引擎的一些常规问题汇总
- javascript里面的确一些关于Width,Height,Top,Left的问题
- 关于统计的一个sql问题,使用动态sql语句实现。
- 关于ASPNET在IIS一些问题的经验总结
- 关于char数组和字符串的一些问题
- 关于ASP.NET在IIS一些问题的经验总结
- 关于session的一些问题
- 关于ASPNET在IIS一些问题的经验总结
- [导入]关于ASPNET在IIS一些问题的经验总结
- 关于tomcat服务器优化,常遇到的一些简单问题的解决方法 (z)
- 关于ASPNET在IIS一些问题的经验总结
- 关于/**/注释段在SQLPlus Worksheet中的问题(2004.12.15随笔)
- 关于ASP.NET在IIS一些问题的经验总结(zz)
- 关于软件地域化(Localization)中的一些问题(zz)
- 关于Tapestry的一些问题
- 关于ASP.NET在IIS一些问题的经验总结
- 关于SQL的存储过程一个悬而未决的老问题