1. 程式人生 > >《hive程式設計指南》閱讀筆記摘要(一)

《hive程式設計指南》閱讀筆記摘要(一)

第一二章 基礎知識、基礎操作
hive的缺點
1、hive不支援記錄級別的增刪改操作,但是使用者可以通過查詢生成新表或者將查詢結果匯入到檔案中。
2、Hive的查詢延時很嚴重,因為MapReduce job的啟動過程消耗很長時間,所以不能用在互動查詢系統中。
3、hive不支援事務。

hive最適合做資料倉庫
HiveQL不符合ansi sql標準,和mysql、oracle的sql有很多差異。

mapreduce處理輸入的文件時,傳給mapper的key是文件中這行的起始位置的字元偏移量,value是這行文字。
對程式設計師透明的事情,也是hadoop神奇的地方是,hadoop會自動執行排序sort和重新洗牌發牌shuffle的過程:對mapper輸出的key/value進行排序,然後洗牌發牌:將相同鍵的key/value對發給同一個reducer。

訪問hive的方式有Cli,HWI(web介面),JDBC,ODBC,thrift(hive有thrift伺服器)等方式。
所有的查詢和操作都會進入到Driver模組
hive不必和mapreduce服務部署在相同的節點上
hive的元資料metadata會儲存在關係型資料庫中,如Derby、mysql等,metadata包括表模式(表結構)等資訊

HBase相對於hive的優點:
他有hive無法提供的資料庫特性,如行級別的更新,快速的查詢響應時間,支援行級事務(不支援多行事務)等


HBase和Hadoop什麼關係:Hbase使用HDFS儲存資料。
Hbase沒有提供類似SQL的查詢語言,但是有Hive on Hbase、phoenix等假設在hbase上的工具幫助實現了SQL功能

hivesql中的關鍵字是不區分大小寫的

一個linux系統上,不同的使用者可以有自己不同的資料倉庫,可以使用下面的語句配置倉庫的目錄(在HDFS系統上),可以把下邊這句命令寫進使用者主目錄下.bashrc中就可以了:
set hive.metastore.warehouse.dir=/..................

儲存元資料的資料庫伺服器:元資料的儲存量其實非常的小,但是如果元資料伺服器是單點的話,也會有單點問題,所以如果資源不緊張,也應該配置成主備模式。
倉庫目錄屬性是hive.metastore.warehouse.dir,屬性值最好是/hive/warehouse或/user/hive/warehouse,後者是預設值


hive --help
hive可以啟動不同的服務,包括
Service List: beeline cleardanglingscratchdir cli hbaseimport hbaseschematool help hiveburninclient hiveserver2 hplsql hwi jar lineage llapdump llap llapstatus metastore metatool orcfiledump rcfilecat schemaTool version
cli是預設的
hiveserver/hiveserver2是監聽其他程序的thrift連線的守護程序
hwi是一個web介面,因為hive通常不會安裝到所有節點,使用hwi就不需要登入到那臺安裝了hive的節點去執行hql了(啟動時會去尋找hwi的war包)

hive中幾種名稱空間
1、hivevar      可讀/可寫    使用者自定義變數
2、hiveconf     可讀/可寫    hive相關的配置屬性
3、system       可讀/可寫    java定義的配置屬性
4、env          只可讀       shell環境變數

hive> set;             打印出所有名稱空間中的所有變數
hive> set -v;     列印更多,還會打印出hadoop定義的所有屬性

執行查詢的幾種方式

1、-e
$ hive -S -e "select * from mytable limit 3" > /home/will/hive/mydata.txt
-S表示靜默執行,不列印到控制檯,並且會去掉提示語句,只保留資料
-e 是執行查詢語句
2、-f
按慣例,hive查詢檔案儲存為.q或者.hql字尾的檔案
$ hive -f /...../abc.hql
或者
hive> source /...../abc.hql          //類似shell中的source也是執行shell指令碼檔案

hive>         敲擊TAB見可以顯示所有關鍵字或函式名
cat  .hivehistory            到使用者主目錄下檢視hive操作歷史檔案   .hivehistory

在hive cli環境中執行一些簡單的shell命令
hive> ! ls /root;

在hive cli環境中執行hadoop dfs命令
hive> dfs -ls /;

hive指令碼中以 --  雙劃線開頭的行表示註釋

執行查詢時,顯示錶頭,即表字段名稱

hive> set hive.cli.print.header=true;

--------------------------
微信公眾號:IT人成長關注
大資料技術QQ群:485681776