- Hive的產生
非java編程者對hdfs的數據做mapreduce操作
- Hive簡介
- 數據倉庫(數據倉庫是對過去的數據進行歷史分析,數據庫支持業務系統交互式訪問)
- 解釋器,編譯器,優化器等
- 運行時,元數據存儲在關係型數據庫裏面(原因:hdfs存儲文件無格式)
- Hive系統架構
--編譯器將一個Hive SQL轉換操作符
--操作符是Hive的最小的處理單元
--每個操作符代表HDFS的一個操作或者以到
- Hive搭建模式
- local模式----此模式連接到一個In-memory的數據庫Derby,一般用於Unit Test;
- 單用戶模式---通過網絡鏈接到一個數據庫中,最常用的模式;
- 遠程服務器模式/多用戶模式---用於非java客戶端訪問原數據庫,在服務器端啓動MetaStoreServer,客戶端利用Thrift協議通過MetaStoreServer訪問原數據庫。
- 內/外部表區別
- Hive創建內部表時(默認創建內部表),會將數據移動到數據倉庫指向的路徑;創建外部表(需要加關鍵字external),僅記錄數據所在的路徑,不對數據的位置做任何改變;
- 刪除時內部表會將表結構和元數據全部刪除,外部表只刪除表結構,不刪除元數據
- Hive分區
分區字段不能在表的列中
CREAT TABLE psn3(
id int,
name string,
age int,
likes array<string>,
address map<string,string>)
partitioned by (age int,sex string)
ROW FORMAT DELIMTIED
FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY '-'
MAP KEYS TERMINATED BY ';'
LINES TERMINATED BY '\n';
添加分區
ALTER TABLE psn2 ADD PARTITION(age=10,sex=boy);
添加分區的時候,必須在現有分區的基礎之上
刪除分區的時候,會將所有存在的分區都刪除