Hive及其工作機制簡介
阿新 • • 發佈:2019-01-09
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,執行完成後就可以把結果輸出出來。也可以把結果寫到其他表裡面。