1. 程式人生 > >Hive面試題收集

Hive面試題收集

1.Hive 原理


1. 使用者提交查詢等任務給Driver。

2. 編譯器獲得該使用者的任務Plan。

3. 編譯器Compiler根據使用者任務去MetaStore中獲取需要的Hive的元資料資訊。

4. 編譯器Compiler得到元資料資訊,對任務進行編譯,先將HiveQL轉換為抽象語法樹,然後將抽象語法樹轉換成查詢塊,將查詢塊轉化為邏輯的查詢計劃,重寫邏輯查詢計劃,將邏輯計劃轉化為物理的計劃(MapReduce), 最後選擇最佳的策略。

5. 將最終的計劃提交給Driver。

6. Driver將計劃Plan轉交給ExecutionEngine去執行,獲取元資料資訊,提交給JobTracker或者SourceManager執行該任務,任務會直接讀取HDFS中檔案進行相應的操作。

7. 獲取執行的結果。

8. 取得並返回執行結果。

2.Mapreduce和hive的區別和聯絡
http://www.360doc.com/content/14/1208/10/20466010_431234360.shtml

3.hive是基於hadoop的資料倉庫。那麼為什麼說hive是基於Hadoop的呢?

之所以說hive是構建在Hadoop之上的資料倉庫,簡單的說是因為:

①資料儲存在hdfs上

②資料計算用mapreduce

 

Hive是一種建立在Hadoop檔案系統上的資料倉庫架構,並對儲存在HDFS中的資料進行分析和管理;它可以將結構化的資料檔案對映為一張資料庫表,並提供完整的 SQL 查詢功能,可以將 SQL 語句轉換為 MapReduce 任務進行執行,通過自己的 SQL 去查詢分析需要的內容,這套 SQL 簡稱 Hive SQL(HQL),使不熟悉MapReduce 的使用者也能很方便地利用 SQL 語言對資料進行查詢、彙總、分析。

 

Hive不支援更改資料的操作,Hive基於資料倉庫,提供靜態資料的動態查詢。其使用類SQL語言,底層經過編譯轉為MapReduce程式,在hadoop上執行,資料儲存在HDFS上。

3.簡述有Hive之後,為何還要學mapreduce
https://blog.csdn.net/WYpersist/article/details/79981385

3.你覺得Hive是否支援in函式
https://blog.csdn.net/WYpersist/article/details/79980945

4.當輸入hive 命令時卡住了,你認為是為什麼,從哪些方面考慮
Cpu ,網路,記憶體

5.說出Hive 安裝資料時,mysql和Derby的區別,為什麼安裝mysql ,或為什麼安裝Derby,分別有什麼優缺陷


https://blog.csdn.net/WYpersist/article/details/80101617

6.簡述Hive 桶表什麼,什麼作用,舉例
 

7.Hive 分割槽是什麼,什麼作用,該怎麼分割槽
 

 

8.Hive 動態分割槽和靜態分割槽
 

10.說出Hive 匯入資料的過程(表有多個分割槽,桶)


11.Hive 排序
 

12.說說你所理解的Hive 檢視操作
 

13.Hive 序列函式
 

14.簡述Hive 自定義函式
 

15.知道Hive UDF是什麼嗎,什麼作用,為什麼要用


16.簡述Hive 優缺點
https://blog.csdn.net/wypersist/article/details/79999401

17.說說Hive內部表和外部表,為什麼要建外部表
Hive 內部表和外部表的區別
Hive 建立內部表時,會將資料移動到資料倉庫指向的路徑;若建立外部表,僅記錄資料所在的路徑,不對資料的位置做任何改變。在刪除表的時候,內部表的元資料和資料會被一起刪除,而外部表只刪除元資料,不刪除資料。這樣外部表相對來說更加安全些,資料組織也更加靈活,方便共享源資料。
  需要注意的是傳統資料庫對錶資料驗證是 schema on write(寫時模式),而 Hive 在load時是不檢查資料是否符合schema的,hive 遵循的是 schema on read(讀時模式),只有在讀的時候hive才檢查、解析具體的資料欄位、schema。
  讀時模式的優勢是load data 非常迅速,因為它不需要讀取資料進行解析,僅僅進行檔案的複製或者移動。

  寫時模式的優勢是提升了查詢效能,因為預先解析之後可以對列建立索引,並壓縮,但這樣也會花費要多的載入時間。

被external修飾的是內部表(managed table),被external修飾的為外部表(external table); 
區別: 
內部表資料由Hive自身管理,外部表資料由HDFS管理; 
內部表資料儲存的位置是hive.metastore.warehouse.dir(預設:/user/hive/warehouse),外部表資料的儲存位置由自己制定; 
刪除內部表會直接刪除元資料(metadata)及儲存資料;刪除外部表僅僅會刪除元資料,HDFS上的檔案並不會被刪除; 
對內部表的修改會將修改直接同步給元資料,而對外部表的表結構和分割槽進行修改,則需要修復(MSCK REPAIR TABLE table_name;)

https://blog.csdn.net/wypersist/article/details/80314022

18.什麼是資料傾斜

https://blog.csdn.net/shujuelin/article/details/84524805
19.Hive 表型別有哪些
https://blog.csdn.net/dsl200970/article/details/70245916

Mapreduce和hive的區別和聯絡
http://www.360doc.com/content/14/1208/10/20466010_431234360.shtml

 

20.說出Hive 如何調優,提升效率
https://blog.csdn.net/WYpersist/article/details/80030499

https://blog.csdn.net/WYpersist/article/details/80030921

https://blog.csdn.net/WYpersist/article/details/80032327

21.說出Hive 資料傾斜是什麼,有什麼影響,怎麼解決

Hive 程式設計題
5、海量資料分佈在100臺電腦上,統計出這批資料的TOP10。(寫出核心演算法思路)

6、背景:現有商品,買家,賣家三個實體,實現一個小小型的交易系統

1)給出表結構設計

2)帥選出沒有買過商品的使用者

3)寫出sql 語句,帥選出僅僅購買了麵粉的使用者

HIVE與RDBMS關係資料庫的區別
1、hive儲存的資料量比較大,適合海量資料,適合儲存軌跡類歷史資料,適合用來做離線分析、資料探勘運算,

事務性較差,實時性較差

 rdbms一般資料量相對來說不會太大,適合事務性計算,實時性較好,更加接近上層業務

2、hive的計算引擎是hadoop的mapreduce,儲存是hadoop的hdfs檔案系統,

 rdbms的引擎由資料庫自己設計實現例如mysql的innoDB,儲存用的是資料庫伺服器本地的檔案系統

3、hive由於基於hadoop所以儲存和計算的擴充套件能力都很好,

 rdbms在這方面比較弱,比如orcale的分表和擴容就很頭疼

4、hive表格沒有主鍵、沒有索引、不支援對具體某一行的操作,適合對批量資料的操作,不支援對資料的update操作,

更新的話一般是先刪除表然後重新落資料

 rdbms事務性強,有主鍵、索引,支援對具體某一行的增刪改查等操作

5、hive的SQL為HQL,與標準的RDBMS的SQL存在有不少的區別,相對來說功能有限

rdbms的SQL為標準SQL,功能較為強大。

22.Hive分析視窗函式


23.Hive 資料傾斜型別

24.如何解決hive 資料傾斜


25.Hive內部表和外部表的區別

https://blog.csdn.net/wypersist/article/details/80314022

26.Hive 取前10條資料
https://blog.csdn.net/wypersist/article/details/80318305


27.Hive 四種排序
https://blog.csdn.net/wypersist/article/details/80314431


28.Mysql 和hive的區別
Hive 的sql語句和mysql 的sql語句有什麼不同
Mysql和derby
Hive 將元資料儲存在 RDBMS 中,一般常用 MySQL 和 Derby。預設情況下,Hive 元資料儲存在內嵌的 Derby 資料庫中,只能允許一個會話連線,只適合簡單的測試。實際生產環境中不適用, 為了支援多使用者會話,則需要一個獨立的元資料庫,使用 MySQL 作為元資料庫,Hive 內部對 MySQL 提供了很好的支援。

內建的derby主要問題是併發效能很差,可以理解為單執行緒操作。

Derby還有一個特性。更換目錄執行操作,會找不到相關表等
比如在/usr下執行建立表,在/usr下可以找到這個表。在/etc下執行查詢這個表,就會找不到 。

29,Hive儲存格式
https://blog.csdn.net/ly19901208/article/details/77049824

30.Hive 工作原理
https://blog.csdn.net/wypersist/article/details/80174647