大數據實訓03---Hive數據倉庫

數據庫:

主要存放實時產生的數據,和業務應用相關,OLTF(面向事務處理)

數據庫是爲捕獲數據而設計

數據倉庫:

依照分析需求、分析維度和設計指標來進行設計。

數據倉庫存放的是歷史數據,OLAP(面向分析處理)

數據倉庫爲分析數據而設計

數據庫設計應該遵守三大範式,符合業務應用即可,但是不符合分析,數據倉庫不需要遵守三大範式

Hive

 Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射成一 張數據庫表,並提供類SQL查詢功能。 

其實HIVE就是一個SQL解析引擎它將SQL語句轉譯成M/R JOB然後 在Hadoop執行,來達到快速開發的目的。它的表其實就是一個Hadoop的目錄/文件(HIVE默認表存放路徑一般都是在你工作目錄的hive目錄裏面),按表名做文件夾分開。

  • 可以把Hadoop下的原始結構化數據變成Hive中的表
  • 可以看成是從SQL到Map-Reduce的映射器 
  • Hive是爲大數據批量處理而生的,Hive的出現解決了傳統的關係型數據庫 (MySql、Oracle)在大數據處理上的瓶頸 

hive官網

Hive體系結構

Hive運行機制

Hive安裝模式

  1. 內嵌模式:元數據保持在內嵌的Derby模式,只允許一個會話連接
  2. 本地獨立模式:在本地安裝Mysql,把元數據放到Mysql內(單用戶模式,只允許一個用戶)
  3. 遠程模式:元數據放置在遠程的Mysql數據庫(可以有多個客戶端,需要有單獨的服務器管理元數據)

目前實訓是用的是單用戶模式,查看hive配置信息

 啓動hive,查看錶(目前是空的),創建一張表,查看錶結構

 查看錶的格式信息 desc formatted tablename; 可以看到表數據是存儲的位置

 

 查看hive倉庫中對於剛剛創建的表的管理(TBLS---記錄了表名,表類型,sd-id, COLUMNS----記錄了表的字段)

 

 查看hdfs中存放的表數據

 在表中插入一條記錄

可以看出單條插入數據執行效率低,可以使用上傳數據文件實現批量導入數據

1.在hive中load data

2.直接將數據文件放在hdfs默認的存放數據位置 

 

 查看數據是否上傳成功

hive語言:HIve_languageManual

SQL語言:

  • DDL數據定義語言,(結構相關)創建create,修改alter,刪除drop
  • DML數據操作語言,(數據相關)增insert刪delete改update查select
  • DCL數據控制語言,(權限相關)  grant

 創建一個外部表logs,指定存儲位置(默認的位置)

將事先準備好的數據文件上傳到默認指定路徑後,可以從hive查到表數據 

進行簡單的數據分析:統計記錄數,可以看到hive先進行解析,之後啓用MR執行處理得到結果

 

hive有兩種表:內部表(普通表)、外部表(external)

內部表與外部表的區別:

內部表

  1. 在加載數據的過程中,實際數據會被移動到數據倉庫目錄中 (hive.metastore.warehouse.dir),
  2. 刪除內部表時,內部表中的數據和元數據信息會被同時刪除

外部表

  1. 在加載數據的過程中,實際數據並不會被移動到數據倉庫目錄中,只是與外部表建立一個鏈接(相當於文件的快捷方式一樣);
  2. 刪除外部表時,僅刪除該鏈接,hive中的元數據被刪除,真實數據不會刪除

 

持續更新...

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