Hive 面試問題
什麼是Hive?
Hive是適用於 Hadoop 的資料倉儲系統,有助於輕鬆進行資料彙總、即席查詢以及對儲存在 Hadoop 相容檔案系統中的大型資料集的分析。
Hive 最初是在 Facebook 開發的。它現在是一個有許多貢獻者的Hadoop子專案。使用者只需要關注頂級的 hive 語言,而不是 java map reduce 程式。Hive 的主要優點之一是它的 SQLish 特性。因此,它在更高的程度上利用了可用性。
hive 程式將自動編譯為在 Hadoop 上執行的 map-reduce 作業。此外,HiveQL 支援將自定義 map-reduce 指令碼插入到查詢中。
從名為 tbl_employee 的 hive 表中選擇工資超過 100 美元的員工姓名:
SELECT employee_name FROM tbl_employee WHERE salary > 100; |
與 SQL 非常相似。
Hive中有哪些表型別?
有兩種型別的表。
1. 託管表。
2. 外部表。
只有 drop table 命令區分託管表和外部表。否則,兩種型別的表都非常相似。
Hive 是否支援記錄級別的插入、刪除或更新?
Hive不提供記錄級別的更新、插入或刪除。此後,Hive 也不提供事務。但是,使用者可以透過 CASE 語句和 Hive 的內建函式來滿足上述 DML 操作。因此,RDBMS 中的複雜更新查詢可能需要 Hive 中的多行程式碼。
什麼樣的資料倉儲應用適合Hive?
Hive 不是一個完整的資料庫。Hadoop 和 HDFS 的設計約束和限制對 Hive 的功能施加了限制。
Hive 最適合資料倉儲應用程式,其中
- 1)分析相對靜態的資料,
- 2) 不需要快速響應時間,並且
- 3) 當資料沒有快速變化時。
Hive 不提供 OLTP、線上事務處理所需的關鍵功能。它更接近於 OLAP 工具、線上分析處理。因此,Hive 最適合資料倉儲應用程式,其中維護和挖掘大型資料集以獲得洞察力、報告等。
hive中表的列如何寫入檔案?
透過在 shell 中使用 awk 命令,可以將 HiveQL (Describe) 的輸出寫入檔案。
hive -S -e “describe table_name;” | awk -F” ” ’{print 1}’ > ~/output |
Hive 中的 CONCAT 函式?
CONCAT (‘Hive’,’-‘,’performs’,’-‘,’good’,’-‘,’in’,’-‘,’Hadoop’); |
輸出:
Hive-performs-good-in-Hadoop
CONCAT適合'-'分隔字串。如果所有字串都通用,則 Hive 提供另一個命令 CONCAT_WS。在這裡,您必須首先指定分隔符。
CONCAT_WS (‘-‘,’Hive’,’performs’,’good’,’in’,’Hadoop’); Output: Hive-performs-good-in-Hadoop |
以 Hive 中的 REPEAT 函式為例?
REPEAT 函式將命令中指定的輸入字串重複 n 次。
REPEAT(‘Hadoop’,3); Output: HadoopHadoopHadoop. |
注意:您也可以在輸入字串中新增一個空格。
Hive 中的 TRIM 函式示例?
TRIM 函式將刪除與字串關聯的空格。
TRIM(‘ Hadoop ‘); Output: Hadoop. |
如果您只想刪除前導或試用空格,則可以分別指定以下命令。
LTRIM(‘ Hadoop’); RTRIM(‘Hadoop ‘); |
以 Hive 中的 REVERSE 函式為例?
REVERSE 函式將反轉字串中的字元。
例子:
REVERSE('Hadoop');
輸出:poodaH
以 Hive 中的 LOWER 或 LCASE 函式為例?
LOWER 或 LCASE 函式將輸入字串轉換為小寫字元。
LOWER(‘Hadoop’); LCASE(‘Hadoop’); Output: hadoop |
如果字元已經是小寫,那麼它們將被保留。
以 Hive 中的 UPPER 或 UCASE 函式為例?
UPPER 或 UCASE 函式將輸入字串轉換為大寫字元。
例子: UPPER('Hadoop'); UCASE('Hadoop'); 輸出: HADOOP |
如果字元已經是大寫,那麼它們將被保留。
Hive 中的雙重型別 – 要點?
瞭解 Hive 中的 double 型別很重要。與 RDBMS 不同,Hive 中的 Double 型別將以不同的方式呈現資料。
請參閱下面的雙型別資料:
24624.0 32556.0 3.99893E5 4366.0 |
E5 在這裡代表 10^5。因此,值 3.99893E5 代表 399893。所有計算都將使用 double 型別準確執行。IEEE 754 雙精度的最大值約為 2.22E308。
將 double 型別資料匯出到任何 RDBMS 時,這一點至關重要,因為該型別可能會被錯誤地解釋。因此,建議在匯出之前將 double 型別轉換為適當的型別。
重新命名 Hive 中的表 - 怎麼做?
使用 ALTER 命令,我們可以重新命名 Hive 中的表。
ALTER TABLE hive_table_name RENAME TO new_name; |
還有另一種方法可以在 Hive 中重新命名錶。有時,如果基礎表具有更多分割槽/函式,則 ALTER 可能需要更多時間。在這種情況下,可以使用匯入和匯出選項。在這裡,您將 hive 資料儲存到 HDFS 並匯入回新表,如下所示。
EXPORT TABLE tbl_name TO ‘HDFS_location’; IMPORT TABLE new_tbl_name FROM ‘HDFS_location’; |
如果您只想保留資料,您可以從舊錶建立一個新表,如下所示。
CREATE TABLE new_tbl_name AS SELECT * FROM old_tbl_name; DROP TABLE old_tbl_name; |
如何更改 Hive 中的列資料型別?
ALTER TABLE table_name CHANGE column_name column_name new_datatype; |
示例:如果要在名為employee 的表中將ID 列的資料型別從integer 更改為bigint。
ALTER TABLE employee CHANGE id id BIGINT; |
Hive中的排序依據和排序依據之間的區別?
SORT BY 將對每個減速器中的資料進行排序。您可以使用任意數量的 reducer 進行 SORT BY 操作。
ORDER BY 會將所有資料排序在一起,這些資料必須透過一個 reducer。因此,蜂巢中的 ORDER BY 使用單個減速器。
ORDER BY 保證輸出中的總順序,而 SORT BY 僅保證減速器中行的排序。如果有多個 reducer,SORT BY 可能會給出部分排序的最終結果
在 Hive 中 RLIKE?
RLIKE(Right-Like)是 Hive 中的一個特殊函式,如果 A 的任何子字串與 B 匹配,則它的計算結果為真。它還遵循 Java 正規表示式模式。使用者不需要在 RLIKE 中為簡單匹配新增 % 符號。
例子:
'Express' RLIKE 'Exp' –> True 'Express' RLIKE '^E.*' –> True(正規表示式) |
此外,當字串有一些空格時,RLIKE 會派上用場。不使用TRIM函式,RLIKE滿足需要的場景。假設如果 A 的值為“Express”(另外 2 個空格)並且 B 的值為“Express”,則 RLIKE 將在不使用 TRIM 的情況下工作得更好。
‘Express’ RLIKE ‘Express’ –> True |
如果 A 或 B 為 NULL,則 RLIKE 評估為 NULL。
相關文章
- Apache Hive 面試問答題ApacheHive面試
- HIVE面試題Hive面試題
- Hive的一個面試題Hive面試題
- hive job oom問題HiveOOM
- Hive 刷題——獎金瓜分問題Hive
- 面試問題面試
- hive學習中遇到的問題Hive
- 詢問面試官的面試問題面試
- 面試反問問題面試
- hive Sql的動態分割槽問題HiveSQL
- hive學習之二:hive sql使用總結及遇到的問題HiveSQL
- 【面試】面試題之汽水空瓶子問題面試題
- Typescript 面試問題TypeScript面試
- iOS 面試問題iOS面試
- java面試問題Java面試
- 面試題:階乘問題面試題
- 【面試】面試常見問題整理面試
- 面試時,你會問面試官哪些問題?面試
- 徹底解決Hive小檔案問題Hive
- Flink實戰之寫Hive效能問題Hive
- 前端面試常問問題前端面試
- 面試、筆試提問問題面試筆試
- Pig面試問題面試
- 面試問題總結面試
- SAP面試問題答案面試
- 昨天的面試問題面試
- 面試疑難問題面試
- cmake Makefile面試問題面試
- 面試中被面試官問到的問題答案(一)面試
- Hive SQL必刷練習題:同時線上人數問題(*****)HiveSQL
- 披著雨披問個面試問題面試
- hive基礎總結(面試常用)Hive面試
- JavaScript中揹包問題(面試題)JavaScript面試題
- 面試題:火車運煤問題面試題
- 機器學習面試問題彙總機器學習面試
- golang 面試常考問題Golang面試
- defer問題——面試Go必看面試Go
- Redis最常見面試問題Redis面試