1. 程式人生 > >Hive及其工作機制簡介

Hive及其工作機制簡介

Hive是一個基於Hadoop的一個數據倉庫工具,可以將結構化的資料檔案對映為一個表。並提供類SQL查詢功能。

資料倉庫

資料庫是用來支撐線上聯機業務的。比如頁面上的資料的展示,儲存客戶操作產生的資料。這類要求變更是實時的、事務的

資料倉庫:如果聯機資料庫中的資料太大了,需要將歷史資訊匯入到離線的倉庫中。可以存入各種各樣的系統的資料。可以按照一定主題來組織這些表。每一個主題中的資料可能結構跟系統的表不同。可能需要從執行資料庫中多個表中得到。面向歷史的。

資料倉庫的建模模型

不遵循資料庫正規化,絕大部分是寬表,冗餘沒關係。因為目標不同,設計就不同。大部分都是以空間換時間。

幾個建模的模型:

  • 星型
  • 雪花型
  • 三正規化型(不常用)

資料倉庫有什麼用

做統計,做資料分析。比如統計年度銷售額,月度銷售額,廣告推薦等。

為什麼用Hive

使用Hadoop面臨的問題:

  • 學習成本很高
  • 專案週期要求太短
  • MapReduce實現複雜查詢邏輯開發難度太大

為什麼用Hive:

  • 操作介面採用類SQL語法,提供快速開發的能力。
  • 避免了寫MapReduce

Hive的工作機制

將清洗過的資料放入到HDFS中,就可以進行各種統計了。但是有些需求用MapReduce寫起來非常難,所以有了Hive。

先上一張架構圖。

Hive提供介面,使用者可以用它建立表。表會放在/user/hive/warehouse/,一張表就是一個目錄。元資訊會記錄在關係型資料庫中(MySQL),它也內建了Debby,但是它是嵌入式的資料庫,會造成不同Hive建表不可見的問題。

可以在Hive中建表,最好欄位型別都用String,比較方便。

然後就可以使用SQL語句查詢了。每一個SQL語句都被Hive的語法解析器解析、組裝成一個MapReduce程式,然後提交給YARN,執行完成後就可以把結果輸出出來。也可以把結果寫到其他表裡面。