Apache Hive 面試問答題

banq發表於2022-01-04

在這篇博文中,我們將看看面試中出現的一些最常見的 apache hive 面試問題和答案。

1. 什麼是Apache Hive?
Apache Hive 是一個構建在 Hadoop 之上的資料倉儲基礎設施,並在HDFS(Hadoop 分散式檔案系統)中的資料之上提供表抽象,如其官方頁面所述。用於為大資料集提供資料彙總、查詢和分析。
 

2、我們為什麼要使用Hive?
Hive 用於摘要、即席分析和資料探勘、垃圾郵件檢測和廣告最佳化。Hive 的主要優點之一是它本質上是SQL。Hive 將其資料庫後設資料儲存在 Hive Metastore 中。

它最適合用於處理大量不可變資料(如伺服器日誌或訪問日誌)的批處理作業。Hive 是讀取模式而不是寫入模式。這意味著它不會在載入期間檢查資料,但會在發出查詢時進行檢查。
 

3. Hive 資料模型有哪些元件?
Apache Hive 資料模型具有以下元件。

  • 資料庫:

它們是將表和其他資料單元與命名衝突分開的名稱空間。
  • 表:  

Hive 表是具有相同模式的同類資料單元。這些表類似於關聯式資料庫 (RDBMS),可以連線、聯合並可以應用過濾器。Hive 表也有類似於 RDBMS 表的行和列。hive 中的表儲存在 Hadoop 分散式檔案系統 (HDFS) 中。
表的一個例子可以是檢視表,其中每一行可以包含以下列(模式):

{timestamp: INT, userid: BIGINT, page_url: STRINGTYPE, referer_ur: STRINGTYPE, IP address: STRINGTYPE

  • 分割槽


配置單元中的分割槽是我們可以按某些標準劃分表的方式。我們可以使用諸如日期之類的 hive 表列並相應地劃分資料。下表顯示了employee 根據列進行分割槽的hive 表employee_start_date

SELECT * FROM school_db.employee where employee_start_date='20211225';



在 Hive 表中,我們可以進一步將分割槽劃分為稱為桶的間隔。每個儲存桶都是根據用作儲存桶標準的列的雜湊計算的。Hive 為分割槽的每個桶建立一個單獨的檔案。
 

4、Hive在Hadoop生態中有什麼用?
Apache Hive 提供了一個類似於 SQL(結構化查詢語言)的介面,稱為 Hive 查詢語言(HQL)來與儲存在 HDFS 中的資料進行互動。使用這個介面,我們可以像時尚一樣組織和查詢資料庫中的資料,並編寫類似 SQL 的查詢。我們可以在 HDFS 之上建立表並將資料儲存在 Hadoop 生態系統中。儘管 Hive 在內部涵蓋了對 MapReduce 作業的所有查詢,但它在隱藏複雜性方面做得很好。Apache hive 查詢也可用於與 Apache Hbase 表無縫互動。
 

5. 我們可以執行 Hive 的不同模式是什麼?
Hive 可以在三種模式下執行。

  • 本地模式

在這種模式下,Hive 在使用者機器上本地執行。這是 Hadoop 提供的預設模式。
  • 偽分散式模式

在這種模式下,開發人員通常會在將程式碼部署到生產環境之前對其進行測試。這裡所有的 Hadoop 守護程式都在同一個虛擬機器中執行。如果我們想快速編寫指令碼並在有限的資料集上測試程式碼,我們可以使用這種模式。
  • 分散式模式

這是 Hive 在分散式模型中執行的生產級模式。所有 Hadoop 貶義詞,如 NameNode、DatanOde、Jobtracker 和 TaskTracker,都在單獨的機器上執行。
 

6. Hive 中有哪些不同型別的表?
Hive 管理的表和外部表主要有兩種型別。

  • 託管表:託管或內部表由 Hive 管理,其中 Hive 管理資料和架構。如果我們刪除 Hive 管理的表,它會刪除該表以及其中的資料。
  • 外部表:在這種表型別中,資料儲存在 HDFS 中,而架構僅由 Hive 管理。這意味著如果我們刪除外部 hive 表,我們只會丟失表,而不是資料本身。

 

7、什麼是Hive中的託管表或內部表?
Hive 中的託管表或內部表是其中的資料、後設資料和架構由內部 Hive 程式管理的表。

Hive 預設建立託管表。當我們刪除託管表或分割槽時,所有後設資料和與之關聯的資料也會被刪除。當使用者希望 Hive 管理表生命週期時,使用 Hive 中的託管表。要知道一個表是託管表還是外部表,我們可以透過下面的命令。

DESCRIBE FORMATTED <Table_Name>

 

8. Hive中的Metastore是什麼意思?
Metastore 是 hive 中的儲存系統,其中包含 hive 表定義、對映和其他後設資料。這可以儲存在任何關聯式資料庫管理系統(RDBMS)中,如 MySQL、MS SQL Server、JPOX(Java 持久物件)支援的 Oracle。

hive 中的後設資料有兩部分:Metastore Service 和 Metastore Database

  • Metastore 服務:它提供了一個介面,程式或使用者可以透過該介面與 hive 進行互動。
  • Metastore資料庫:該資料庫儲存與 Hive 表相關的資料對映、表定義和其他後設資料。在生產環境中,Hive 後設資料儲存在 MySQL 等外部資料庫中。

相關文章