Introduction to Hive
Hive 簡介
Jazz Yao-Tsung Wang
- Jeff Hammerbacher 團隊在臉書(Facebook)打造的資訊平台中,最大構成要素之一
- Hive 是建構於 Hadoop 之上的資料倉儲框架(a framework for data warehousing)。
- Hive 是寫給具備強大 SQL 技能(卻缺乏 Java 程式設計技能)的分析師們,用來查詢臉書存於 HDFS 的海量資料。
- SQL 擁有廣為業界熟知的龐大優勢。是商業智慧(business intelligence)的通用語法(lingua franca,就像 ODBC 是通用橋接器一樣),因此 Hive 能 與這些商品做緊密的整合。
Hive 與傳統資料庫之比較
特徵
|
Hive
|
RDBMS
|
Schema
|
Schema on READ
|
Schema on WRITE
|
更新(Update)
|
支援 INSERT
|
支援 UPDATE, INSERT, DELETE
|
交易(Transaction)
|
不支援
|
支援
|
索引(Indexes)
|
不支援
|
支援
|
延遲(Latency)
|
數分鐘
|
秒以內
|
函數(Function)
|
數十個內建函數
|
上百個內建函數
|
多重表格新增
|
支援
|
不支援
|
SELECT時建立資料表
|
支援
|
在 SQL-02 不支援
|
SELECT
|
FROM 子句限用單一資料表
|
SQL-92 標準
|
JOIN
|
INNER, OUTER, SEMI, MAP JOINS
|
SQL-92 或其他變形
|
次查詢(Subqueries)
|
只能在 FROM 子句中使用
|
在任何子句
|
Table: Hive vs RDBMS Source: “表 12-2. SQL 與 HiveQL 的高階比較表”, Hadoop 技術大全,第三版
“Schema on Write” vs “Schema on Read”
- 「schema on write」:在傳統資料庫中,一個資料表的 schema 是在資料載入時就被強制套用了。
- 讓查詢的效率比較快
- 可以針對欄位做索引,並對資料做壓縮。
- 代價是它必須花較久的時間來把資料載入資料庫
- 「schema on read」:Hive 並不會在資料載入時進行驗證,相反地它只有在進行查詢時才作驗證。
- 讓初始化載入可以很快執行
- 載入(Load)的操作只是檔案的複製或搬運
- 較有彈性:假設有兩種 schema 對應相同的底層資料,視欲執行之分析而定
- 有許多情境(scenario)是載入 schema 時無法預知的,因此在還沒執行查詢前,無法套用索引。