HIVE入門

Hive概述

什麼是 Hive?
* Hive 是建立在 Hadoop HDFS 上的數據庫倉庫基礎建構
* Hive 可以用來進行數據庫提取轉化加載(ETL)
* Hive 定義了簡單的類似 SQL 查詢語言,稱爲 HQL,它允許熟悉 SQL 的用戶查詢數據
* Hive 允許熟悉 MapReduce 的開發者自定義 mapper 和 reducer 來處理內建的 mapper 和 reducer 無法完成的複雜工作
* Hive 是 SQL 解析引擎,它將 SQL 語句轉化成 M/R Job,然後在 Hadoop 執行
* Hive 的表其實就是 HDFS 的目錄/文件

Q:數據倉庫與數據庫的區別?
A:數據倉庫是一個面向主題(用戶關注的重點)的集成的(來自於分散的數據,可以來自於Oracle、Mysql、文本等)不可更新的(方便決策,所以一般只有查詢功能)、隨時間不變化的數據集合,它用於支持企業或組織的決策分析處理。

數據倉庫的結構和建立過程
首先要有數據源,數據源可以不限;接着對不同的數據進行存儲和管理,即ETL(抽取、轉換(轉換成符合格式要求的數據)、裝載);最後要有數據倉庫引擎,需要有不同的服務器提供不同的服務,例如,前端展示(數據查詢、數據報表、數據分析、各類應用)。

OLTP應用與OLAP應用
OLTP應用:面向事物,頻率非常高,例如,銀行轉賬。轉賬和扣錢要同步
OLAP應用:面向分析查詢,不會更新、刪除、和更新操作,例如,推薦系統

Hive安裝的三種方式

Hive的數據模型

  1. 星型模型:例如,推薦系統,以商品爲中心,有很多訂單信息、客戶信息、廠家信息、促銷信息、物流信息等邊沿,構成了星星一樣的模型。
  2. 雪花模型:基於星型模型發展起來的。例如,上述還可以客戶信息模型爲中心繼續反戰家庭信息、銀行信息等,還可以以別的主題爲中心繼續發展,模型越發展越大,成爲一個雪花模型。

Hive的體系結構

一、元數據
- Hive將元數據存儲在數據庫中(metastore),支持mysql、derby等數據庫。默認存儲在derby數據庫中。
- Hive中的元數據包括表的名字,表的列和分區及其屬性,表的屬性(是否爲外部表等),標的數據所在目錄等
元數據例子

二、HQL的執行過程
解釋器、編譯器、優化器完成HQL查詢語句從詞法分析、語法分析、編譯、優化以及查詢計劃的生成。生成的查詢計劃存儲在HDFS中,並在隨後有MapReduce調用執行。
執行過程

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