Hive面試問題1

A所有的hive任務都會有reducer的執行嗎?

答:不是,由於當前hive的優化,使得一般簡單的任務不會去用reducer任務;只有稍微複雜的任務纔會有reducer任務

舉例:使用select * from person ; 就不會有reducer

      使用from person p 

                  insert  into  person2 select p.age,p.name  

 

B\hive解決了什麼問題

答:多用戶的使用,解決了元數據的衝突,hive2代理管理元數據       

    區別hive2,hiveserver2是服務,而hive是一個交互窗口

 

C\設置時鐘同步的定時任務

crontab -e

*/10 * * * * /usr/sbin/ntpdate time.nist.gov

 

D\hive的函數:UDF  UDAF UDTF的區別

UDF:   單行進入,單行輸出

UDAF:  多行進入,單行輸出

UDTF:  單行輸入,多行輸出

 

E\hive的優化

答:優化可以從幾個方面着手:

    1. 好的模型設計事半功倍。

    2. 解決數據傾斜問題。

3. 減少 job 數。

4. 設置合理的 map reduce 的 task 數,能有效提升性能。(比如,10w+級別的計算,用

        160 個 reduce,那是相當的浪費,1 個足夠)。

5. 自己動手寫 sql 解決數據傾斜問題是個不錯的選擇。set hive.groupby.skewindata=true;

   這是通用的算法優化,但算法優化總是漠視業務,習慣性提供通用的解決方法。 Etl 開發

   人員更瞭解業務,更瞭解數據,所以通過業務邏輯解決傾斜的方法往往更精確,更有效。

6. 對 count(distinct)採取漠視的方法,尤其數據大的時候很容易產生傾斜問題,不抱僥倖

      心理。自己動手,豐衣足食。

7. 對小文件進行合併,是行至有效的提高調度效率的方法,假如我們的作業設置合理的文

件數,對雲梯的整體調度效率也會產生積極的影響。

8. 優化時把握整體,單個作業最優不如整體最優。

 

F優化:

1\排序優化

Order by 實現全局排序,一個 reduce 實現,效率低

Sort by  實現部分有序,單個 reduce 輸出的結果是有序的,效率高,通常和

DISTRIBUTE BY 關鍵字一起使用(DISTRIBUTE BY 關鍵字 可以指定 map 到 reduce

端的分發 key)

CLUSTER BY col1 等價於 DISTRIBUTE BY col1 SORT BY col1

2\分區優化

3\合併小文件

4\避免空值關聯,多用聚合函數,多用臨時表
--------------------- 
作者:highfei2011 
來源:CSDN 
原文:https://blog.csdn.net/high2011/article/details/51594990 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章