大資料--hive的基礎認識(學習筆記)
一.什麼是hive
Hive是基於Hadoop的資料倉庫解決方案。由於Hadoop本身在資料儲存(hdfs)和計算(Map-reduce)方面有很好的可擴充套件性和高容錯性,因此使用Hive構建的資料倉庫也秉承了這些特性。
也就是說,Hive就是在Hadoop上加了一層SQL介面,可以將SQL翻譯成MapReduce去Hadoop上執行,這樣就使得資料開發和分析人員很方便的使用SQL來完成海量資料的統計和分析,而不必使用程式語言開發MapReduce那麼麻煩。
Hive封裝了:1). 直譯器 2).編譯器 3).優化器
二.Hive的架構
.Hive就是大資料中的資料倉庫,擅長處理格式良好的結構化資料。對非結構化並不合適;
.Hive會把SQL語句轉換成MapReduce任務執行
.提供ETL的工具
.Hive執行時,元資料儲存在關係型資料庫中
三. Hive的優缺點
優點:1).成本低,入手快 2). 不需要學習MapReduce開發
缺點:不支援實時查詢,更適合離線任務
四.Hive的HQL說明
1). Hive 不是支援所有的SQL語句,不支援更新和刪除操作,不支援單條插入。只支援批量的插入。(重點)
2). 不支援事物的增刪改,僅僅支援批量匯入
3). 資料儲存:HDFS
4). 延時:hive延時高
5). hive的查詢很慢,一般都寫定時任務
五. Hive的資料型別
六. Hive的表
1). 託管表(managed table)(內部表)--如果刪除內部表時,內部表的資料也會被刪除
2). 外部表 --如果刪除外部表時,外部表的資料不會被刪除,所以一般設計外部表
3). 用命令檢視內建服務:hive --service help
七. Hive建立表
建立表.create table emp
1).靜態分割槽表
新增加分割槽:alter table emp add if not exists partition(dt='2017-06-13') //dt='2017-06-13'是分割槽名
建立目錄:hadoop fs -mkdir /user/hive/warehouse/emp
查看錶:show partitions emp
查看錶結構:desc formatted emp
載入本地資料:load local inpath '/temp/a.txt' into table emp partition (dt='2019-06-13') // 把檔案放到2019-06-13這個分割槽
檢視檔案內容:more a.txt
分割槽列在原始的資料中是不存在的,但是載入到hive中指定分割槽,用select查詢後,分割槽列是存在的。
2).動態分割槽表
1.動態分割槽前先要設定一個引數:set hive.exec.dynamic.partition.mode=nonstrict;
2.insert into table emp_2 partition(dt) select name, salary, dt from emp;
3.set hive.exec.dynamic.partition.mode 執行,表示讀當前配置的設定 加"=" 是修改
4.查看錶的分割槽: show partitions emp_2