hive的一般學習者和培訓者在談效能優化的時候一般都會從語法和引數這些雕蟲小技的角度談優化,而不會革命性的優化hive的效能,產生這種現象的原因有:
1,歷史原因和思維定勢:大家學習sql的時候一般都是就單機db,這個時候你的效能優化技巧確實主要是sql語法和引數調優;
2,hive的核心的效能問題往往是產生在超過規模資料集,例如說100億條級別的資料集,以及每天處理上千上萬個hive作業的情況下產生的;
上面的第二點是我們現在hive效能調優部分要徹底解決的內容;
要從根本上解決和顯著的解決實際企業中hive真正的效能優化問題,必須考慮到底什麼是hive效能的限制,我們按照優先順序來說:
第一重要的是:戰略性架構
解決海量資料下大量job過於頻繁的io問題,而這個問題實質上涉及了架構方面的分表 資料復用 以及分割槽表等調優的方式;
補充:1,海量的資料中有些資料是高頻使用的資料,而有些是很少使用的,如果能夠分離成為不同的表,會極大的提公升效率;很多的作業可能會有共同點,抽離出來先進行計算並保留計算結果,後面的作業都可以復用;同時,底層的基礎功能
也可以先計算,在上層應用的時候直接拿資料結果,而不是每次都重複計算;
2,合理從用靜態分割槽表和動態分割槽表,可以避免資料全域性掃瞄及計算資源更合理的利用;
3,資料傾斜的一站式解決方案;
第二重要的是:引擎和物理層面,很多內容都是普通hive使用這不知道的!
從hive語法和job內部的角度去進行優化,這要求mapreduce以及hive如何被翻譯成為mapreduce要非常精通;
第三重要的是:一些關鍵的引數;
歸根到底,hive的效能優化主要考慮的是如何最大化和最有效的使用cpu memory io;
hive效能調優
原文 limit 限制調整 因為使用 limit 語句時候,是先執行整個查詢語句,然後再返回部分結果的 set hive.limit.optimize.enable true set hive.limit.row.max.size 10000 set hive.limit.optimize.limi...
Hive效能調優
軟體環境 hive1.2.1 hadoop2.6.4 直接使用hive cli模式執行 1.設定執行引擎 set hive.execution.engine mr set hive.execution.engine spark 如果設定執行引擎為mr,那麼就會呼叫hadoop的maprecude來執...
Hive實戰效能調優
hive是乙個資料倉儲基礎工具在hadoop中用來處理結構化資料。它架構在hadoop之上,總歸為大資料,並使得查詢和分析方便。並提供簡單的sql查詢功能,可以將sql語句轉換為mapreduce任務進行執行。hive 構建在基於靜態批處理的hadoop 之上,hadoop 通常都有較高的延遲並且在...