1.概述
Hive是建立在Hadoop上的數據倉庫基礎構架。它提供了一系列的工具,可以用來進行數據提取轉化加載(ETL),這是一種可以存儲、查詢和分析存儲在Hadoop中的大規模數據的機制
Hive
定義了簡單的類SQL查詢語言HQL,它允許熟悉SQL的用戶查詢數據,也允許熟悉Map/Reduce的開發者開發自定義的mapper和
reducer來處理內建的mapper和reducer無法完成的複雜的分析工作
Hive被設計用來處理大規模數據,因此提交查詢到返回結果所需的時間可能很長,所以,Hive最適合用來維護海量數據,對數據進行數據挖掘,給出意見和報告
不同於其他傳統數據庫的寫時模式(即在數據寫入數據庫時對模式進行檢查),Hive在數據加載時不會進行數據模式檢查,而是在查詢時進行,也就是讀時模式
2.常用概念
1)內表、外表:
關鍵字external 區分,外表無控制權,外表用Location 確定路徑;內表drop 會同時drop 元數據和關聯數據;外表只是drop 元數據;對於元數據有獨立的關係型數據庫維護(MYSQL)
3.使用
- desc
- hive strict
- 調用Hive時,添加-S(大寫)參數,可以開啓靜默模式
- 以--開頭的行會被註釋掉
-mysql中sql執行順序,hive可以參考:
1):FROM
2):ON
3):OUTER(JOIN)
4):WHERE
5):GROUPBY
6):CUBE|ROLLUP
7):HAVING
8):SELECT
9):DISTINCT
10):ORDERBY
11):TOP
4.數據加工
對數據進行深加工,一般使用transform、udf和reflectUDF三種方法
- Transform能在map和reduce階段運行,輸入爲map或reduce階段的所有數據,輸出即爲該階段的輸出。方便、快捷,只要一個程序能從標準輸入讀數據並輸出到標準輸出,就可以通過transform調用,能完成複雜的邏輯數據處理任務,成本低