Hadoop筆記之十八——Hive實戰、詳解

  一、什麼是hive

   如下圖所示,hive在Hadoop生態中處於比較高層的位置,其本質上就是將mapreduce轉換成了sql的寫法。

          卻也sql不盡然相同,畢竟mysql等關係型數據的sql則是服務於web、應用等,是爲了讓數據更面向對象、更穩定、更原子性操作。而hive的目的則是數據分析,不需要對每一條數據都負責,只是分析數據的特性特徵。

 

二、hive的原理

     我們知道了什麼是hive,那麼hive的原理是什麼呢?它和sql數據庫一樣基於本地文件系統上嗎?顯然並不是的,總結一下,:

      1、hive底層文件系統爲HDFS(即分佈式文件系統,這就說明hive比起關係型數據庫,存儲的數據量可以倍數級提升)

      2、hive的執行過程:hiveQL轉化爲mapreduce,mapreduce運行於yarn平臺(即hive運行的實質上是mapreduce,並不快,但是可處理數據量大)

 

三、hive使用

      hive實際使用可以通過兩種方式:hive-cli客戶端中交互式操作;hive命令提交語句或sql文件。

      hive在實際使用過程中只要編寫普通的sql即可,於一般sql操作無太大區別,需要注意的地方:

      1、沒有指定databse,則默認使用default庫。

      2、創建table的時候有三種方式:內部表(類似一般sql表)、外部表(通過hdfs上已存在的結構化數據直接創建出表)、臨時表(只對當前session有效)

      3、table有分區的概念,table可以按照table內字段進行分區(比如員工表按照年和月進行分區)。分區後每一個分區都在hdfs上有單獨的存儲文件夾,這樣大大提高了單分區的操作速度。

      4、hive在涉及join、groupby等操作的時候需要注意數據傾斜、資源分配不均的問題,這也是hive調優的重點。對於要處理的數據,要明白hive轉換成mapreduce後,每個節點處理多少數據,是否均勻。

     5、hive有describe、explain等語句,可以查看我們所寫sql的執行計劃。

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