温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

记一次hadoop大数据导出

发布时间:2020-07-21 05:04:27 来源:网络 阅读:4744 作者:lejie851112 栏目:大数据

需求:导出一个月数据提供测试分析

实施:

直接hive -e “xxxxx”> testdata.txt

然后看输出信息,map%1 %2 %3...... %100,但是reduce一直是0%,等啊等,等了十几个小时,还是0%,最后杀掉进程,再试了几次,现象一样,可知每次等十几个小时,一转眼,两天了。

于是怀疑集群有问题,排查了好久,没发现问题。

又怀疑where条件有问题,折腾了半天还是一样。

后来加上了limit先看看有没有结果,有的话就证明语法没错;果然limit 10很快就出来了10条记录,语法正确。

又接着换了spark去提取,总是报buffer不足,加到原来10倍,还提示不足。

难道数据这么大?

准备count一下,等等等,一个月总共2亿8千万多条,mygod!!!我错了

于是先用hive导出一天的数据,等等等,重定性写文件就写了20分钟,我心想这得有多少啊,等写完了用wc -l  一看,800多万条,文件大小4G,哦哦哦,顿时明白了,不是集群问题,是因为数据太多reduce执行很慢。

最后,估算了每条约是600B,然后每天取1000条,连续取7天,最后文件大小约4MB

命令如下:

hive -e "set hive.cli.print.header=true;use dw;select * from aem where day ='2015-08-24' limit 1000" > aem_pg_8_24_30.txt

hive -e "use dw;select * from aem where day ='2015-08-25' limit 1000" >> aem_pg_8_24_30.txt

hive -e "use dw;select * from aem where day ='2015-08-26' limit 1000" >> aem_pg_8_24_30.txt

hive -e "use dw;select * from aem where day ='2015-08-27' limit 1000" >> aem_pg_8_24_30.txt

hive -e "use dw;select * from aem where day ='2015-08-28' limit 1000" >> aem_pg_8_24_30.txt

hive -e "use dw;select * from aem where day ='2015-08-29' limit 1000" >> aem_pg_8_24_30.txt

hive -e "use dw;select * from aem where day ='2015-08-30' limit 1000" >> aem_pg_8_24_30.txt


收获:

大数据处理的思路要稍微不同。首先估算数据量,这个很重要;然后确定导出方式,太大的话缩小颗粒度,多次导出。

思路很重要!思路很重要!思路很重要!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI