記一次hive中遇到的坑


0x01

今天看靠,由于公司要進行新老數(shù)據(jù)倉庫的遷移来庭,于是順便接手了其中一部分的工作焚辅,其實大部分遷移工作都比較簡單,就是把從ods層-dw層-dm層-sh展示層中涉及到舊倉庫的表替換成新倉庫的表誓军,并且檢查其中字段的差異性袱讹,并進行相應的操作疲扎。于是擼起袖子開工昵时。

0x02

  1. 前期的進展很順利,很快就完成了幾張表的遷移椒丧,心想著按這個進度壹甥,不到一個小時就能完成了。Orz
  2. 在進行到第五張表的遷移時壶熏,發(fā)現(xiàn)很久沒有完成句柠,于是檢查了日志,發(fā)現(xiàn)卡在了reduce階段棒假,從60%作用開始溯职,基本上每隔10分鐘左右進度才增加1%。
  3. 遇到這種情況帽哑,第一反應就是發(fā)生了數(shù)據(jù)傾斜谜酒,于是馬上進行數(shù)據(jù)源的排查,在這里先說明一下查詢語句主體妻枕,大致如下select xxx from t1 left join on t2 where t1.sid = t2.sid left join t3 on t1.uid = t3.uid僻族。其中t2和t3均已經(jīng)進行了去重和選定分區(qū)的處理粘驰。
  4. t1以及t2的數(shù)據(jù)量在百萬級別,t3在億級別作用述么。然后對t1進行了count(distinct uid)后蝌数,發(fā)現(xiàn)了異常數(shù)據(jù) null的量在千萬級別,于是采取了直接剔除null的解決方案度秘,心想這個應該就不會進行數(shù)據(jù)傾斜了顶伞,于是再次運行腳本,然后等待敷钾,結果出乎我的意料枝哄,這次沒有卡在60%,而是卡在了65%阻荒,淚崩啊挠锥。
  5. 再次檢查日志,發(fā)現(xiàn)reduce個數(shù)只有一個侨赡,心想大概是hive自動判斷reduce個數(shù)不準確蓖租,于是手動強制設定了reduce的個數(shù)set mapred.reduce.tasks=800;。再一次運行羊壹,等待蓖宦,60%--70%--80%--90%--95%...,這下終于正常了油猫。...99%--99%--99%--99%...稠茂,在看到一連串的99%不斷刷新的同時,我終于接受了還有錯誤的事實情妖。
  6. 到底哪里出錯了呢睬关,按說數(shù)據(jù)量也并不是特別大呀,想了想毡证,還有一個辦法电爹,就是使用hive.groupby.skewindata=true;來進行當有數(shù)據(jù)傾斜時進行負載均衡,其實理性告訴我料睛,和這個關系不大丐箩,但是沒辦法了呀,只能試一下了恤煞。結果不出我所料屎勘,還是卡在了99%。
  7. 還有半小時就到飯點了居扒,怎么辦概漱,這時候同事對我隨口提了一句,檢查一下數(shù)據(jù)類型苔货,說不定是數(shù)據(jù)類型不一致造成的呢犀概。"不應該呀"立哑,我嘀咕著,抱著死馬當活馬醫(yī)的態(tài)度姻灶,我看了一些表結構铛绰,發(fā)現(xiàn)還真不一樣,t1的是bigint产喉,而t2和t3的是string捂掰。但是我記得hive有自動隱式轉換機制的呀,為了驗證我的觀點曾沈,我進行了select cast(1010000001000390061 as bigint) = cast(1010000001000390061 as string)查詢这嚣,結果就是返回true,應該不是這個原因塞俱。是的姐帚。
  8. 但是也想不到別的辦法了,于是再去吃飯之前障涯,我還是提交了這個微小的改動罐旗,cast(t1.sid as string) = t2.sid,在吃飯的過程中,我一直在想解決的辦法唯蝶,吃完飯回來九秀,奇跡發(fā)生了,居然就是這個原因U澄摇9难选!
  9. 突然想起來征字,之前有過一次都弹,好像也是數(shù)據(jù)類型的原因,在使用join時柔纵,對兩個bigint類型和string類型進行等值操作時缔杉,乍一看锤躁,操作沒問題搁料,可是仔細一看,返回的數(shù)據(jù)不對啊系羞。當時也沒注意這個細節(jié)郭计。
  10. 難道是超出了bigint范圍?在查詢了select cast(10010000001000390061 as bigint)后椒振,驚奇的發(fā)現(xiàn)居然返回了9223372036854775807昭伸,這下明白了,應該是在join時澎迎,由于t3的uid字段超出了bigint的范圍庐杨,從而使得最后的連接后數(shù)據(jù)量劇增选调,想一下,百萬 * 百萬 * 億 灵份,大概有10的20次方仁堪,難怪卡在了99%。

0xff

  • 回顧這一次填坑之旅填渠,不僅意識到了不能完全依賴于平臺提供的便利功能弦聂,而疏忽了其背后原理性的東西。如自動轉換類型的原理氛什,以及相關的限制莺葫。
  • 對于不同層的表的維度字段的定義,盡量保證維度字段的類型保持一致枪眉,不然有可能會出現(xiàn)一些奇怪的問題捺檬,比如我這次遇到的由于超出范圍而造成自動轉換的結果不準確的bug。
  • 在遇到問題遲遲不能解決的時候贸铜,不妨問問身邊的人欺冀,俗話說的好,當局者迷萨脑,旁觀者清嘛隐轩。Orz
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市渤早,隨后出現(xiàn)的幾起案子职车,更是在濱河造成了極大的恐慌,老刑警劉巖鹊杖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悴灵,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機馁菜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門摹恨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人茫孔,你說我怎么就攤上這事”环迹” “怎么了缰贝?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長畔濒。 經(jīng)常有香客問我剩晴,道長,這世上最難降的妖魔是什么侵状? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任赞弥,我火速辦了婚禮毅整,結果婚禮上,老公的妹妹穿的比我還像新娘绽左。我一直安慰自己毛嫉,他們只是感情好,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布妇菱。 她就那樣靜靜地躺著承粤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪闯团。 梳的紋絲不亂的頭發(fā)上辛臊,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機與錄音房交,去河邊找鬼彻舰。 笑死,一個胖子當著我的面吹牛候味,可吹牛的內(nèi)容都是我干的刃唤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼白群,長吁一口氣:“原來是場噩夢啊……” “哼尚胞!你這毒婦竟也來了?” 一聲冷哼從身側響起帜慢,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤笼裳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后粱玲,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體躬柬,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年抽减,在試婚紗的時候發(fā)現(xiàn)自己被綠了允青。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡卵沉,死狀恐怖颠锉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情偎箫,我是刑警寧澤木柬,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布皆串,位于F島的核電站淹办,受9級特大地震影響,放射性物質發(fā)生泄漏恶复。R本人自食惡果不足惜怜森,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一速挑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧副硅,春花似錦姥宝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至培己,卻和暖如春碳蛋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背省咨。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工肃弟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人零蓉。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓笤受,卻偏偏與公主長得像,于是被迫代替她去往敵國和親敌蜂。 傳聞我的和親對象是個殘疾皇子箩兽,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容

  • hive優(yōu)化總結 - 上帝之手 - 博客頻道 - CSDN.NET http://blog.csdn.net/p...
    葡萄喃喃囈語閱讀 854評論 0 2
  • Hive性能優(yōu)化 1.概述繼續(xù)《那些年使用Hive踩過的坑》一文中的剩余部分,本篇博客贅述了在工作中總結Hive的...
    Albert陳凱閱讀 1,524評論 0 8
  • Student(Sid,Sname,Sage,Ssex) 學生表Course(Cid,Cname,Tid) 課程表...
    小爐爐閱讀 1,449評論 0 0
  • 想記錄一下兩個方面的感受章喉,第一比肄、學習課程認識到說話邏輯思維的重要性。要表達的內(nèi)容怎么才能讓對方聽起來更舒服囊陡、更容易...
    夢磊閱讀 208評論 1 0
  • 在上一篇文章里面我寫了單點突破芳绩,本片主要想談一談個人對投資的理解。 1 借勢 任何一個事物的發(fā)展都是離不開外部環(huán)境...
    探花磨刀石閱讀 304評論 1 2