您好,登錄后才能下訂單哦!
需求:導出一個月數據提供測試分析
實施:
直接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
收獲:
大數據處理的思路要稍微不同。首先估算數據量,這個很重要;然后確定導出方式,太大的話縮小顆粒度,多次導出。
思路很重要!思路很重要!思路很重要!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。