Hive基礎筆記(架構、運行過程、元數據、數據類型)

接着上次的hive安裝配置https://www.jianshu.com/p/2f284bd01344,這次記錄別的。

那Hive到底能幹啥??

基於Hadoop的數據倉庫,可以把結構化的數據文件映射爲一張表,然後提供類SQL的查詢功能、
本質是把HQL轉化爲MR程序,當然這個MR可以被Spark或者Flink代替。

Hive架構

hive架構
這個Metadata配置存在mysql裏面,其實客戶端是先找了MetaData,然後再根據定位去HDFS裏訪問DataNode。
然後裏面有好幾個器,這個是Hive主要做的事,順序:解析器->編譯器->優化器->執行器
1.解析器看SQL語法,語法通過了去編譯器。
2.編譯器負責翻譯,把HQL翻譯成MR任務,然後交給優化器。
3.優化器對MR任務進行優化。
4.最後交給執行器執行任務。

Hive運行過程

寫:
用戶創建一個Table,通過映射關係在HDFS中創建數據文件,MetaData中記錄對應文件的path,根據這個,記錄到Hive的元數據中。

讀:
用戶寫SQL,然後這邊其實是先訪問元數據,找到HDFS文件位置。整個過程如上面架構中寫的。

元數據Metadata

Hive對應Mysql元數據的位置是一個默認叫做metastore的數據庫。
這裏面比較重要的表:DBS、TBLS、PARTITONS、PARTITONS_*
DBS記錄的是庫,TBLS記錄的是表,另外那幾個是分區信息。

測一下遠程連接
在hive的bin目錄下有一個beeline,他是在linux系統裏啓動一個hive的jdbc的連接客戶端。
在啓動它之前,我們要先啓動一下hiveserver2

 nohup hive --service hiveserver2 2>&1 &

啓動beelin之後可以測一下遠程連接,不過想要遠程連接hadoop需要在hadoop的core-site.xml配置一下:

<property>
  <name>hadoop.proxyuser.hadoop.hosts</name>
  <value>*</value>
</property>
<property>
  <name>hadoop.proxyuser.hadoop.groups</name>
 <value>*</value>
</property>

由於我linux用戶是hadoop,所以name那裏,proxyuser寫的就是hadoop了,這麼配好之後,就可以遠程了,否則會報錯。
啓動beeline。然後執行:

> !connect jdbc:hive2://Master:10000

會讓我們輸入密碼,這個時候輸入就行了,我用戶hadoop,密碼沒設置。

然後提示我們成功了!默認的事務隔離級別是重複讀。可以看一下數據庫:

> show databases;

基本數據類型

基本數據類型
String類型相當於varchar,理論上它能存2G的字符數。

集合數據類型

集合類型
啊,這個就是你想象中的,Array和Map就是你腦海裏java裏面的Array和Map,Struct就是C裏面的Struct

類型轉換

Hive不能反向轉化。
隱式類型轉化規則:
1.tinyint能轉成int,int能轉成bigint
2.整數類型,包括純數字的string能隱式轉成double
3.tinyint、smallint、int能轉爲float
4.boolean類型不能轉化爲任何類型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章