hive面試題(免費拿走不謝)


Hive 最常見的幾個面試題

1.hive 的使用, 內外部表的區別,分區作用, UDF Hive 優化
(1)hive 使用:倉庫、工具
(2)hive 內部表:加載數據到 hive 所在的 hdfs 目錄,刪除時,元數據和數據文件都刪除
    外部表:不加載數據到 hive 所在的 hdfs 目錄,刪除時,只刪除表結構。
(3)分區作用:防止數據傾斜
(4)UDF 函數:用戶自定義的函數 (主要解決格式,計算問題 ),需要繼承 UDF
java 代碼實現
class TestUDFHive extends UDF {
public String evalute(String str){
try{
return "hello"+str
}catch(Exception e){
return str+"error"
}

}

}

(5)sort by和order by之間的區別?

  使用order by會引發全局排序;

select * from baidu_click order by click desc;

   使用 distribute和sort進行分組排序

select * from baidu_click distribute by product_line sort by click desc;

  distribute by + sort by就是該替代方案,被distribute by設定的字段為KEY,數據會被HASH分發到不同的reducer機器上,然后sort by會對同一個reducer機器上的每組數據進行局部排序。

 

  sort by的排序發生在每個reduce里,order by和sort by之間的不同點是前者保證在全局進行排序,而后者僅保證在每個reduce內排序,如果有超過1個reduce,sort by可能有部分結果有序。

注意:它也許是混亂的作為單獨列排序對於sort by和cluster by。不同點在於cluster by的分區列和sort by有多重reduce,reduce內的分區數據時一致的。 

 (6)Hive 優化:看做 mapreduce 處理

   排序優化: sort by 效率高於 order by。分區:使用靜態分區 (statu_date="20160516",location="beijin") ,每個分區對應 hdfs 上的一個目錄,減少 job 和 task 數量:使用表鏈接操作,解決 groupby 數據傾斜問題:設置hive.groupby.skewindata=true ,那么 hive 會自動負載均衡,小文件合並成大文件:表連接操作,使用 UDF 或 UDAF 函數: 

 

面試題有點多,過幾天再來更新


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM