學習數據倉庫Hive

數據分析引擎:hivenode

大數據的終極目標:使用SQL語句來處理大數據 mysql

1,hadoop的體系架構中:sql

 兩個數據分析引擎:(*)Hive:支持sql數據庫

                           (*)Pig:支持PigLatin架構

 

 一,什麼是hive?oop

1,hive是一個基於hdfs之上的數據倉庫性能

  hive                hdfs大數據

  表                   目錄url

  數據                文件spa

  分區表            目錄

  分桶                文件

2,hive是基於hadoop之上的一個數據分析引擎

也就是說Hive是一個翻譯器(hive 2.x之前:sql語句由hive編譯成mr,hive2.x之後:sql語句由hive編譯成spark程序)

 3,hql是sql的一個子集,不徹底支持sql

   

 二,hive的體系架構

    hive是基於在hdfs之上的,數據也是存在於咱們的從節點Datanode上面的。

    第一種方式:咱們能夠經過cli命令行寫sql語句,而後由Hive Driver轉換成MR任務去處理數據

    第二種方式:經過jdbc的方式,須要指定url肯定訪問地址,並且須要經過中間人(1.x Thrift server 2.x HiveServer2  端口都是10000)把sql語句提交給咱們的hiveDriver驅動

    第三種方式 基於網頁去執行sql,用HWI(Hive Web Interface只有hive2.2版本之前才提供,2.2以後使用HUE去使用)去提交sql到HiveDriver上去運行.

    注意:hive架構中元數據要單獨存儲在數據庫中(推薦使用mysql去存儲),經過讀取mysql數據庫中存儲的hive元數據獲得hive裏面存儲的真正的數據(數據模型),

由於hive元數據存儲了hive的表名、列名、列的類型 、分區、分桶、其餘信息.

     

三,hive的數據模型

1,內部表:相似於Mysql,Oracle裏面的表

2,外部表:只定義表結構,真正的數據存儲在hdfs的某個目錄上。能夠經過查看外部表的方式查看到這一個路徑下全部的表信息

3,分區表:提高性能(按部門分區)

     你能夠按某個字段去分區,好比你有張員工表,表裏確定有部門號,按照部門號分區,也就是把屬於同一個部門的員工放在一張表裏管理,那麼在查詢的時候就能夠只掃描這張表,從而提高效率

 4,分桶表:相似hash分區,判斷某個字段值的hash是否同樣,同樣的話分一個桶。

    例如:咱們仍是拿員工表舉例,取部門號的hash值,把全部數據的部門hash值同樣的數據分在一個桶(桶是以文件形式存在的,區是以目錄形式存在的)裏面。

 5,視圖

    視圖的存在是爲了簡化複雜的查詢,就是將複雜的sql結果保留成視圖,下次直接查詢視圖就能夠獲得結果。好比你把查詢部門號爲10的員工保留成視圖,下次直接查詢視圖就可獲得結果

相關文章
相關標籤/搜索