自慰套教室~女子全员妊娠,精品无码国产自产拍在线观看蜜桃,亚洲国产精品成人精品无码区,久别的草原在线看视频免费

集團站切換校區

驗證碼已發送,請查收短信

復制成功
微信號:togogoi
添加微信好友, 詳細了解課程
已復制成功,如果自動跳轉微信失敗,請前往微信添加好友
打開微信
圖標

學習文章

當前位置:首頁 > >學習文章 > >

{大數據}Hive

發布時間: 2018-01-28 02:14:27

?什么是Hive:

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

1、數據倉庫的定義

     數據倉庫是一個面向主題的、集成的、穩定的、反映歷史變化的、隨著時間的流逝發生變化的數據集合。它主要支持管理人員的決策分析。

     數據倉庫收集了企業相關內部和外部各個業務系統數據源、歸檔文件等一系列歷史數據,最后轉化成企業需要的戰略決策信息。

面向主題:根據業務的不同而進行的內容劃分;

集成特性:因為不同的業務源數據具有不同的數據特點,當業務源數據進入到數據倉庫時,需要采用統一的編碼格式進行數據加載,從而保證數據倉庫中數據的唯一性;

非易失性:數據倉庫通過保存數據不同歷史的各種狀態,并不對數據進行任何更新操作。

歷史特性:數據保留時間戳字段,記錄每個數據在不同時間內的各種狀態。

2. 數據倉庫和數據庫的區別

數據庫是面向事務的設計,數據倉庫是面向主題設計的。

數據庫一般存儲在線交易數據,數據倉庫存儲的一般是歷史數據。

數據庫設計是盡量避免冗余,一般采用符合范式的規則來設計,數據倉庫在設計是有意引入冗余,采用反范式的方式來設計。

數據庫是為捕獲數據而設計,數據倉庫是為分析數據而設計,它的兩個基本的元素是維表和事實表。(維是看問題的角度,比如時間,部門,維表放的就是這些東西的定義,事實表里放著要查詢的數據,同時有維的ID)


為什么使用Hive

1:直接使用hadoop所面臨的問題

人員學習成本太高

項目周期要求太短

MapReduce實現復雜查詢邏輯開發難度太大

2:為什么要使用Hive 

操作接口采用類SQL語法,提供快速開發的能力。

避免了去寫MapReduce,減少開發人員的學習成本。

擴展功能很方便。

?

Hive的特點

可擴展

Hive可以自由的擴展集群的規模,一般情況下不需要重啟服務。


延展性

Hive支持用戶自定義函數,用戶可以根據自己的需求來實現自己的函數。


容錯

良好的容錯性,節點出現問題SQL仍可完成執行。

?

Hive架構?



?

Jobtracker是hadoop1.x中的組件,它的功能相當于: Resourcemanager+AppMaster


TaskTracker 相當于:  Nodemanager  +  yarnchild

?

基本組成

用戶接口:包括 CLI、JDBC/ODBC、WebGUI。

元數據存儲:通常是存儲在關系數據庫如 mysql , derby中。

解釋器、編譯器、優化器、執行器。各組件的基本功能 ? 用戶接口主要由三個:CLI、JDBC/ODBC和WebGUI。其中,CLI為shell命令行;JDBC/ODBC是Hive的JAVA實現,與傳統數據庫JDBC類似;WebGUI是通過瀏覽器訪問Hive。

元數據存儲:Hive 將元數據存儲在數據庫中。Hive 中的元數據包括表的名字,表的列和分區及其屬性,表的屬性(是否為外部表等),表的數據所在目錄等。

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


?Hive與Hadoop的關系?:

Hive利用HDFS存儲數據,利用MapReduce查詢數據

?

Hive與傳統數據庫對比

?

總結:hive具有sql數據庫的外表,但應用場景完全不同,hive只適合用來做批量數據統計分析


1. 查詢語言。由于 SQL 被廣泛的應用在數據倉庫中,因此,專門針對 Hive 的特性設計了類 SQL 的查詢語言 HQL。熟悉 SQL 開發的開發者可以很方便的使用 Hive 進行開發。

2. 數據存儲位置。Hive 是建立在 Hadoop 之上的,所有 Hive 的數據都是存儲在 HDFS 中的。而數據庫則可以將數據保存在塊設備或者本地文件系統中。

3. 數據格式。Hive 中沒有定義專門的數據格式,數據格式可以由用戶指定,用戶定義數據格式需要指定三個屬性:列分隔符(通常為空格、”\t”、”\x001″)、行分隔符(”\n”)以及讀取文件數據的方法(Hive 中默認有三個文件格式 TextFile,SequenceFile 以及 RCFile)。由于在加載數據的過程中,不需要從用戶數據格式到 Hive 定義的數據格式的轉換,因此,Hive 在加載的過程中不會對數據本身進行任何修改,而只是將數據內容復制或者移動到相應的 HDFS 目錄中。而在數據庫中,不同的數據庫有不同的存儲引擎,定義了自己的數據格式。所有數據都會按照一定的組織存儲,因此,數據庫加載數據的過程會比較耗時。

4. 數據更新。由于 Hive 是針對數據倉庫應用設計的,而數據倉庫的內容是讀多寫少的。因此,Hive 中不支持對數據的改寫和添加,所有的數據都是在加載的時候中確定好的。而數據庫中的數據通常是需要經常進行修改的,因此可以使用 INSERT INTO ...  VALUES 添加數據,使用 UPDATE ... SET 修改數據。

索引。之前已經說過,Hive 在加載數據的過程中不會對數據進行任何處理,甚至不會對數據進行掃描


?

Hive的數據存儲

1、Hive中所有的數據都存儲在 HDFS 中,沒有專門的數據存儲格式(可支持Text,SequenceFile,ParquetFile,RCFILE等)

2、只需要在創建表的時候告訴 Hive 數據中的列分隔符和行分隔符,Hive 就可以解析數據。

3、Hive 中包含以下數據模型:DB、Table,External Table,Partition,Bucket。

    db:在hdfs中表現為${hive.metastore.warehouse.dir}目錄下一個文件夾

    table:在hdfs中表現所屬db目錄下一個文件夾

    external table:外部表, 與table類似,不過其數據存放位置可以在任意指定路徑

        普通表: 刪除表后, hdfs上的文件都刪了

        External外部表刪除后, hdfs上的文件沒有刪除, 只是把文件刪除了

    partition:在hdfs中表現為table目錄下的子目錄

bucket:桶, 在hdfs中表現為同一個表目錄下根據hash散列之后的多個文件, 會根據不同的文件把數據放到不同的文件中

?

?

上一篇: {大數據}HIVE的安裝部署

下一篇: {大數據}Kafka Java API

十五年老品牌
微信咨詢:togogoi 咨詢電話:18922156670 咨詢網站客服:在線客服

相關課程推薦

在線咨詢 ×

您好,請問有什么可以幫您?我們將竭誠提供最優質服務!

<蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>