Hive的示例分析

這篇文章主要為大家展示了“Hive的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Hive的示例分析”這篇文章吧。

你所需要的網(wǎng)站建設(shè)服務(wù),我們均能行業(yè)靠前的水平為你提供.標(biāo)準(zhǔn)是產(chǎn)品質(zhì)量的保證,主要從事成都網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、成都品牌網(wǎng)站建設(shè)、網(wǎng)頁制作、做網(wǎng)站、建網(wǎng)站。創(chuàng)新互聯(lián)公司擁有實(shí)力堅(jiān)強(qiáng)的技術(shù)研發(fā)團(tuán)隊(duì)及素養(yǎng)的視覺設(shè)計(jì)專才。

Hive定義

Hive是建立在 Hadoop 上的數(shù)據(jù)倉庫基礎(chǔ)構(gòu)架。它提供了一系列的工具,可以用來進(jìn)行數(shù)據(jù)提取轉(zhuǎn)化加載(ETL),這是一種可以存儲(chǔ)、查詢和分析存儲(chǔ)在 Hadoop 中的大規(guī)模數(shù)據(jù)的機(jī)制。Hive 定義了簡(jiǎn)單的類 SQL 查詢語言,稱為 HQL,它允許熟悉 SQL 的用戶查詢數(shù)據(jù)。同時(shí),這個(gè)語言也允許熟悉 MapReduce 開發(fā)者的開發(fā)自定義的 mapper 和 reducer 來處理內(nèi)建的 mapper 和 reducer 無法完成的復(fù)雜的分析工作。

Hive 沒有專門的數(shù)據(jù)格式。 Hive 可以很好的工作在 Thrift之上,控制分隔符,也允許用戶指定數(shù)據(jù)格式。

所以當(dāng)我們提到Hive的時(shí)候,我們談?wù)摰氖且环N架構(gòu),或者是數(shù)據(jù)倉庫,疑惑代指Hive SQL,叫法上并沒有什么特殊的限制要求。

Hive的適用場(chǎng)景

既然上面提到了Hive與傳統(tǒng)的數(shù)據(jù)庫不一樣,那么Hive肯定有它獨(dú)特的地方:

Hive 構(gòu)建在基于靜態(tài)批處理的Hadoop 之上,Hadoop 通常都有較高的延遲并且在作業(yè)提交和調(diào)度的時(shí)候需要大量的開銷。因此,Hive 并不能夠在大規(guī)模數(shù)據(jù)集上實(shí)現(xiàn)低延遲快速的查詢,例如,Hive 在幾百M(fèi)B 的數(shù)據(jù)集上執(zhí)行查詢一般有分鐘級(jí)的時(shí)間延遲。因此,Hive 并不適合那些需要低延遲的應(yīng)用,例如,聯(lián)機(jī)事務(wù)處理(OLTP)。Hive 查詢操作過程嚴(yán)格遵守Hadoop MapReduce 的作業(yè)執(zhí)行模型,Hive 將用戶的HiveQL 語句通過解釋器轉(zhuǎn)換為MapReduce 作業(yè)提交到Hadoop 集群上,Hadoop 監(jiān)控作業(yè)執(zhí)行過程,然后返回作業(yè)執(zhí)行結(jié)果給用戶。Hive 并非為聯(lián)機(jī)事務(wù)處理而設(shè)計(jì),Hive 并不提供實(shí)時(shí)的查詢和基于行級(jí)的數(shù)據(jù)更新操作。Hive 的最佳使用場(chǎng)合是大數(shù)據(jù)集的批處理作業(yè),例如,網(wǎng)絡(luò)日志分析。

Hive技術(shù)特點(diǎn)

Hive 是一種底層封裝了Hadoop數(shù)據(jù)倉庫處理工具,使用類SQL 的HiveQL 語言實(shí)現(xiàn)數(shù)據(jù)查詢,所有Hive 的數(shù)據(jù)都存儲(chǔ)在Hadoop 兼容的文件系統(tǒng)(例如,Amazon S3、HDFS)中。Hive 在加載數(shù)據(jù)過程中不會(huì)對(duì)數(shù)據(jù)進(jìn)行任何的修改,只是將數(shù)據(jù)移動(dòng)到HDFS 中Hive 設(shè)定的目錄下,因此,Hive 不支持對(duì)數(shù)據(jù)的改寫和添加,所有的數(shù)據(jù)都是在加載的時(shí)候確定的。Hive 的設(shè)計(jì)特點(diǎn)如下。

● 支持索引,加快數(shù)據(jù)查詢。

● 不同的存儲(chǔ)類型,例如,純文本文件、HBase 中的文件。

● 將元數(shù)據(jù)保存在關(guān)系數(shù)據(jù)庫中,大大減少了在查詢過程中執(zhí)行語義檢查的時(shí)間。

● 可以直接使用存儲(chǔ)在Hadoop 文件系統(tǒng)中的數(shù)據(jù)。

● 內(nèi)置大量用戶函數(shù)UDF 來操作時(shí)間、字符串和其他的數(shù)據(jù)挖掘工具,支持用戶擴(kuò)展UDF 函數(shù)來完成內(nèi)置函數(shù)無法實(shí)現(xiàn)的操作。

● 類SQL 的查詢方式,將SQL 查詢轉(zhuǎn)換為MapReduce 的job 在Hadoop集群上執(zhí)行。

Hive的體系結(jié)構(gòu)

用戶接口

用戶接口主要有三個(gè):CLI,Client 和 WUI。其中最常用的是 CLI,Cli 啟動(dòng)的時(shí)候,會(huì)同時(shí)啟動(dòng)一個(gè) Hive 副本。Client 是 Hive 的客戶端,用戶連接至 Hive Server。在啟動(dòng) Client 模式的時(shí)候,需要指出 Hive Server 所在節(jié)點(diǎn),并且在該節(jié)點(diǎn)啟動(dòng) Hive Server。 WUI 是通過瀏覽器訪問 Hive。

元數(shù)據(jù)存儲(chǔ)

Hive 將元數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫中,如 MySQL、derby。Hive 中的元數(shù)據(jù)包括表的名字,表的列和分區(qū)及其屬性,表的屬性(是否為外部表等),表的數(shù)據(jù)所在目錄等。

解釋器、編譯器、優(yōu)化器、執(zhí)行器

解釋器、編譯器、優(yōu)化器完成 HQL 查詢語句從詞法分析、語法分析、編譯、優(yōu)化以及查詢計(jì)劃的生成。生成的查詢計(jì)劃存儲(chǔ)在 HDFS 中,并在隨后由 MapReduce 調(diào)用執(zhí)行。

Hadoop

Hive 的數(shù)據(jù)存儲(chǔ)在 HDFS 中,大部分的查詢由 MapReduce 完成(包含 * 的查詢,比如 select * from tbl 不會(huì)生成 MapReduce 任務(wù))。

Hive的數(shù)據(jù)存儲(chǔ)情況

首先,Hive 沒有專門的數(shù)據(jù)存儲(chǔ)格式,也沒有為數(shù)據(jù)建立索引,用戶可以非常自由的組織 Hive 中的表,只需要在創(chuàng)建表的時(shí)候告訴 Hive 數(shù)據(jù)中的列分隔符和行分隔符,Hive 就可以解析數(shù)據(jù)。

其次,Hive 中所有的數(shù)據(jù)都存儲(chǔ)在 HDFS 中,Hive 中包含以下數(shù)據(jù)模型:表(Table),外部表(External Table),分區(qū)(Partition),桶(Bucket)。

Hive 中的 Table 和數(shù)據(jù)庫中的 Table 在概念上是類似的,每一個(gè) Table 在 Hive 中都有一個(gè)相應(yīng)的目錄存儲(chǔ)數(shù)據(jù)。例如,一個(gè)表 pvs,它在 HDFS 中的路徑為:/wh/pvs,其中,wh 是在 hive-site.xml 中由 ${hive.metastore.warehouse.dir} 指定的數(shù)據(jù)倉庫的目錄,所有的 Table 數(shù)據(jù)(不包括 External Table)都保存在這個(gè)目錄中。

Partition 對(duì)應(yīng)于數(shù)據(jù)庫中的 Partition 列的密集索引,但是 Hive 中 Partition 的組織方式和數(shù)據(jù)庫中的很不相同。在 Hive 中,表中的一個(gè) Partition 對(duì)應(yīng)于表下的一個(gè)目錄,所有的 Partition 的數(shù)據(jù)都存儲(chǔ)在對(duì)應(yīng)的目錄中。例如:pvs 表中包含 ds 和 city 兩個(gè) Partition,則對(duì)應(yīng)于 ds = 20090801, ctry = US 的 HDFS 子目錄為:/wh/pvs/ds=20090801/ctry=US;對(duì)應(yīng)于 ds = 20090801, ctry = CA 的 HDFS 子目錄為;/wh/pvs/ds=20090801/ctry=CA

Buckets 對(duì)指定列計(jì)算 hash,根據(jù) hash 值切分?jǐn)?shù)據(jù),目的是為了并行,每一個(gè) Bucket 對(duì)應(yīng)一個(gè)文件。將 user 列分散至 32 個(gè) bucket,首先對(duì) user 列的值計(jì)算 hash,對(duì)應(yīng) hash 值為 0 的 HDFS 目錄為:/wh/pvs/ds=20090801/ctry=US/part-00000;hash 值為 20 的 HDFS 目錄為:/wh/pvs/ds=20090801/ctry=US/part-00020

External Table 指向已經(jīng)在 HDFS 中存在的數(shù)據(jù),可以創(chuàng)建 Partition。它和 Table 在元數(shù)據(jù)的組織上是相同的,而實(shí)際數(shù)據(jù)的存儲(chǔ)則有較大的差異。

Table 的創(chuàng)建過程和數(shù)據(jù)加載過程(這兩個(gè)過程可以在同一個(gè)語句中完成),在加載數(shù)據(jù)的過程中,實(shí)際數(shù)據(jù)會(huì)被移動(dòng)到數(shù)據(jù)倉庫目錄中;之后對(duì)數(shù)據(jù)對(duì)訪問將會(huì)直接在數(shù)據(jù)倉庫目錄中完成。刪除表時(shí),表中的數(shù)據(jù)和元數(shù)據(jù)將會(huì)被同時(shí)刪除。

  • External Table 只有一個(gè)過程,加載數(shù)據(jù)和創(chuàng)建表同時(shí)完成(CREATE EXTERNAL TABLE ……LOCATION),實(shí)際數(shù)據(jù)是存儲(chǔ)在 LOCATION 后面指定的 HDFS 路徑中,并不會(huì)移動(dòng)到數(shù)據(jù)倉庫目錄中。當(dāng)刪除一個(gè) External Table 時(shí),僅刪除元數(shù)據(jù),表中的數(shù)據(jù)不會(huì)真正被刪除。

以上是“Hive的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當(dāng)前文章:Hive的示例分析
轉(zhuǎn)載來源:http://bm7419.com/article26/gihdjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站排名、手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站制作、商城網(wǎng)站、用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司