
- Hive教程
- Hive - 首頁
- Hive - 簡介
- Hive - 安裝
- Hive - 資料型別
- Hive - 建立資料庫
- Hive - 刪除資料庫
- Hive - 建立表
- Hive - 修改表
- Hive - 刪除表
- Hive - 分割槽
- Hive - 內建運算子
- Hive - 內建函式
- Hive - 檢視和索引
- HiveQL
- HiveQL - Select Where
- HiveQL - Select Order By
- HiveQL - Select Group By
- HiveQL - Select Joins
- Hive有用資源
- Hive - 問答
- Hive - 快速指南
- Hive - 有用資源
Hive面試題
尊敬的讀者,這些Hive面試題專為幫助您熟悉面試中可能遇到的關於Hive主題的問題而設計。根據我的經驗,優秀的面試官很少會預先計劃好要問哪些具體問題,通常會從該主題的一些基本概念開始,然後根據進一步的討論和您的回答繼續提問。
有兩種型別:管理表和外部表。在管理表中,資料和模式都在Hive的控制之下,但在外部表中,只有模式在Hive的控制之下。
不,Hive不提供行級插入和更新。因此,它不適合OLTP系統。
ALTER TABLE table_name RENAME TO new_name
使用REPLACE列選項
ALTER TABLE table_name REPLACE COLUMNS ……
它是一個關係資料庫,儲存Hive表、分割槽、Hive資料庫等的元資料。
根據使用者擁有的資料的性質,內建的Serde可能無法滿足資料的格式。因此,使用者需要編寫自己的Java程式碼來滿足他們的資料格式要求。
Hive是Hadoop生態系統中的一個工具,它提供了一個類似資料庫的介面來組織和查詢資料,並編寫類似SQL的查詢。它適合使用SQL語法訪問和分析Hadoop中的資料。
hdfs://namenode_server/user/hive/warehouse
- 本地模式
- 分散式模式
- 偽分散式模式
是的。TIMESTAMP資料型別以java.sql.timestamp格式儲存日期。
Hive中有三種集合資料型別。
- 陣列(ARRAY)
- 對映(MAP)
- 結構體(STRUCT)
是的,在命令前使用!標記。
例如,在Hive提示符下輸入!pwd將列出當前目錄。
Hive變數是在Hive環境中建立的變數,Hive指令碼可以引用它。它用於在查詢開始執行時將一些值傳遞給Hive查詢。
使用source命令。
示例:
Hive> source /path/to/file/file_with_query.hql
它是一個包含需要在Hive CLI啟動時執行的命令列表的檔案。例如,將嚴格模式設定為true等。
預設記錄分隔符是:\n
欄位分隔符是:\001,\002,\003
在讀取資料時驗證模式與資料是否匹配,寫入資料時不強制執行模式。
SHOW DATABASES LIKE ‘p.*’
使用use命令,您可以確定所有後續Hive查詢將執行的資料庫。
無法刪除DBPROPERTY。
它將MapReduce作業設定為嚴格模式。這樣,對分割槽表的查詢就不能在沒有WHERE子句的情況下執行。這可以防止非常大的作業長時間執行。
可以使用以下查詢:
SHOW PARTITIONS table_name PARTITION(partitioned_column=’partition_value’)
org.apache.hadoop.mapred.TextInputFormat
org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
當我們發出命令DROP TABLE IF EXISTS table_name時,
如果要刪除的表不存在,Hive會丟擲錯誤。
資料保留在舊位置。必須手動移動它。
ALTER TABLE table_name CHANGE COLUMN new_col INT BEFORE x_col
不會。它只會減少檔案數量,使NameNode更容易管理。
使用ALTER TABLE語句中的ENABLE OFFLINE子句。
省略LOAD DATA語句中的LOCAL子句。
新傳入的檔案只是新增到目標目錄中,現有檔案會被簡單地覆蓋。名稱與任何傳入檔案不匹配的其他檔案將繼續存在。
如果新增OVERWRITE子句,則會在寫入新資料之前刪除目錄中的所有現有資料。
它根據select子句中的列建立employees表的partitions。這稱為動態分割槽插入。
表生成函式是一個函式,它將單個列作為引數,並將其擴充套件為多個列或行。例如explode()。
如果我們將屬性hive.exec.mode.local.auto設定為true,則Hive將避免使用MapReduce來獲取查詢結果。
LIKE運算子的行為與select查詢中使用的常規SQL運算子相同。例如:
street_name like ‘%Chi’
但是RLIKE運算子使用更高階的正則表示式,這些正則表示式在Java中可用。
例如:street_name RLIKE ‘.*(Chi|Oho).*’,它將選擇任何包含“Chi”或“Oho”的單詞。
不可以。因為這種型別的連線無法在MapReduce中實現。
在連線查詢中,最小的表應放在第一個位置,最大的表應放在最後一個位置。
它控制map輸出如何在reducer之間進行reduce。它在流資料的情況下非常有用。
Select cast(price as FLOAT)
Hive將返回NULL。
不可以。與同一資料庫中所有其他表和檢視相比,檢視的名稱必須唯一。
不可以。檢視不能是INSERT或LOAD語句的目標。
索引佔用空間,並且在排列建立索引的列的值時會產生處理成本。
SHOW INDEX ON table_name
這將列出在table_name表中任何列上建立的所有索引。
列中的值被雜湊到使用者定義的多個桶中。這是一種避免過多分割槽或巢狀分割槽同時確保最佳化查詢輸出的方法。
這是一個查詢提示,用於在執行查詢之前將表流式傳輸到記憶體中。這是一種查詢最佳化技術。
可以。分割槽可以歸檔。優點是它減少了儲存在NameNode中的檔案數量,並且可以使用Hive查詢歸檔檔案。缺點是它會導致查詢效率降低,並且不會節省任何空間。
它是一個UDF,使用Java程式建立,用於滿足Hive中現有函式未涵蓋的特定需求。它可以以程式設計方式檢測輸入引數的型別並提供相應的響應。
本地輸入路徑應包含檔案而不是目錄。$env:HOME是在Hive環境中可用的有效變數。
TBLPROPERTIES子句用於在建立表時新增建立者名稱。
TBLPROPERTIES新增方式如下:
TBLPROPERTIES(‘creator’= ‘Joan’)
下一步是什麼?
此外,你可以回顧一下你以前做過與該科目相關的作業,確保你能自信地談論它們。如果你剛畢業,面試官並不期望你能回答非常複雜的問題,而是要確保你的基礎概念非常紮實。
其次,你答不上幾個問題其實並不重要,重要的是,你回答的任何問題都必須充滿自信。所以面試時一定要自信。我們在tutorialspoint祝你面試順利,並祝你未來一切順利!乾杯 :-)