上的數(shù)據(jù)倉庫平臺,其設(shè)計目標是使Hadoop上的數(shù)據(jù)操作_第1頁
上的數(shù)據(jù)倉庫平臺,其設(shè)計目標是使Hadoop上的數(shù)據(jù)操作_第2頁
上的數(shù)據(jù)倉庫平臺,其設(shè)計目標是使Hadoop上的數(shù)據(jù)操作_第3頁
上的數(shù)據(jù)倉庫平臺,其設(shè)計目標是使Hadoop上的數(shù)據(jù)操作_第4頁
免費預(yù)覽已結(jié)束,剩余15頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、簡介Hive的組成Hive的數(shù)據(jù)模型查詢語言Hive 是一個構(gòu)建在Hadoop 上的數(shù)據(jù)倉庫平臺,其設(shè)計目標是使Hadoop上的數(shù)據(jù)操作與傳統(tǒng)SQL結(jié)合,讓熟悉SQL編程的開發(fā)人員能夠向Hadoop平臺遷移。Hive可以在HDFS上構(gòu)建數(shù)據(jù)倉庫來存儲結(jié)構(gòu)化的數(shù)據(jù),這些數(shù)據(jù)來源于HDFS上的原始數(shù)據(jù), Hive提供了類似SQL的查詢語言HiveQL,可以執(zhí)行查詢,變換數(shù)據(jù)等操作。通過解析,HiveQL語言在底層被轉(zhuǎn)化為相應(yīng)的MapReduce操作。 Hive的體系結(jié)構(gòu) Hadoop HJobTrackerNameNode HiveDriver(Compiler,Optimizer,Executo

2、r)ThriftServerCLIJDBC/ODBCWebGUIMetastoreHive相關(guān)組件: 外部接口:Hive提供了例如命令行(CLI)、Web界面等用戶接口, 還提供了應(yīng)用程序接口(API)例如 JDBC,ODBC等。 Thrift服務(wù)器:Hive Thrift服務(wù)器是一種跨語言服務(wù)的可伸縮軟件框架。它結(jié)合律功能強大的軟件堆棧的代碼生成引擎,可以無縫的與C+、C#、Java、Python、PHP和Ruby結(jié)合。Thrift允許用戶簡單地定義文件中的數(shù)據(jù)類型和服務(wù)接口,編譯器生成代碼來實現(xiàn)RPC客戶端和服務(wù)器之間的通信。 Hive內(nèi)部集成了Thrift服務(wù),支持在多種語言中運行Hiv

3、e命令,使 客戶端可以跨平臺連接Hive。Hive相關(guān)組件: 解析器(Driver):包括解釋器,編譯器,優(yōu)化器,執(zhí)行器,通過這一系列對HiveQL查詢語句的處理,最后生成查詢計劃。解析器管理著HiveQL語句在編譯,優(yōu)化和執(zhí)行時的生命周期。當(dāng)接收到一個HiveQL查詢語句時,解析器會創(chuàng)建一個相對的句柄,這個句柄被用來追蹤執(zhí)行時間,輸出行數(shù)等數(shù)據(jù)。 Hadoop:數(shù)據(jù)倉庫和查詢計劃存儲在HDFS上,計算過程由MapReduce執(zhí)行。Hive相關(guān)組件: 元數(shù)據(jù)庫(Metastore):管理系統(tǒng)目錄,通常存儲在關(guān)系數(shù)據(jù)庫如MySQL,Derby中。Hive所有其他的組件都會與它進行交互。Hive的

4、元數(shù)據(jù)中保存了表的屬性和服務(wù)信息,為查詢操作提供依據(jù),默認的元數(shù)據(jù)庫是內(nèi)部的Derby,這種情況下metastore和其他Hive服務(wù)運行在同一個Java虛擬機里,只能允許建立單個會話,要實現(xiàn)多用戶多會話支持,需要配置一個獨立的元數(shù)據(jù)庫。數(shù)據(jù)在Hive里組織成表,分區(qū)和桶的形式 表:Hive里的表類似于關(guān)系數(shù)據(jù)庫中的表。每個表都有一個對應(yīng)的 HDFS目錄。表中的數(shù)據(jù)被序列化后存儲在該目錄的文件中。 Hive提供了內(nèi)置的序列化格式。用戶還可以通過自定義序列化 和反序列化的方法去支持新的數(shù)據(jù)格式。每張表的序列化格式 存儲在原數(shù)據(jù)庫中,并在查詢編譯和執(zhí)行時被自動調(diào)用。Hive 同時還支持數(shù)據(jù)存儲在N

5、FS,本地目錄的外部表。數(shù)據(jù)在Hive里組織成表,分區(qū)和桶的形式 分區(qū):分區(qū)是表的部分列的集合。一個表可以有一個或者多個分區(qū), 這些分區(qū)確定了數(shù)據(jù)在表目錄下的分布情況。假設(shè)表T的數(shù) 據(jù)是在/wh/T目錄下。如果T在列ds和ctry上被分區(qū),那么 ds值為20090101和ctry值為US的數(shù)據(jù)將會被存儲到 /wh/T/ds=20090101/ctry=US的目錄下。 桶:在每個分區(qū)中的數(shù)據(jù)可以根據(jù)列的哈希值進一步劃分成桶,每 個桶在分區(qū)目錄下都存在一個文件中。Hive支持的數(shù)據(jù)類型(基本類型) 基本類型基本類型大小大小描述描述TINYINT1字節(jié)有符號整數(shù)SMALLINT2字節(jié)有符號整數(shù)INT

6、4字節(jié)有符號整數(shù)BIGINT8字節(jié)有符號整數(shù)FLOAT4字節(jié)單精度浮點數(shù)DOUBLE8字節(jié)雙精度浮點數(shù)BOOLEAN取true/falseSTRING最大2GB字符串,類似于sql的varcharHive支持的數(shù)據(jù)類型(復(fù)雜類型)復(fù)雜類型復(fù)雜類型大小大小描述描述ARRAY不限一組有序字段,字段類型必須相同MAP不限無序鍵值對,鍵值內(nèi)部字段類型必須相同STRUCT不限一組字段,字段類型可以不同Hive提供了類似于SQL的查詢語言 HiveQL。 HiveQL支持選擇,投影,連接,聚合,合并以及From中嵌套的子查詢語句。 HiveQL允許在創(chuàng)建表的時候申明表的序列化格式,分區(qū)等HiveQL目前不

7、支持行的刪除和更新。 HiveQL支持多表的插入操作。HiveQL的常用操作 創(chuàng)建表:創(chuàng)建一張名為userinfo的表,表中有兩列id和name,Hive Shell中的創(chuàng)建命令為: create table userinfo (id int, name string) row format delimited fields terminated by t; row format delimited fields terminated by t 是HiveQL特有的,用來指定數(shù)據(jù)的分隔方式 導(dǎo)入數(shù)據(jù):建表后可以從本地文件系統(tǒng)或HDFS中導(dǎo)入數(shù)據(jù)文件,導(dǎo)入命令如下: load data loca

8、l inpath /home/hadoop/1 overwrite into table userinfoHiveQL的常用操作 創(chuàng)建分區(qū):創(chuàng)建一張名為userinfo的表,表中有兩列id和name,并且對name進行分區(qū),創(chuàng)建命令為: create table userinfo (id int) partitioned by (name string) row format delimited fields terminated by t; 創(chuàng)建桶:可以把表或者是分區(qū)組織成桶,桶是按行分開組織特定字段,每個桶對應(yīng)一個reduce操作。在建立桶之前要設(shè)置hive.enforce.bucketi

9、ng屬性,命令為: set hive.enforce.bucketing; hive.enforce.bucketing=true create table userinfo (id int,name string) clusteredby (id) into 3 buckets row format delimited fields terminated by t;HiveQL的常用操作 多表插入:在同一條語句中,把讀取的同一份元數(shù)據(jù)插入到不同表中。 from userinfo insert overwrite table t1 select id,name insert overwrite

10、 table t2 select count(distinct id),name group by name 修改表:重命名表,增加數(shù)據(jù)列 alter table userinfo rename to userinfo1 alter talbe userinfo1 add colums (grade string);HiveQL的常用操作 連接,HiveQL的連接分為內(nèi)連接,左向外連接,右向外連接,全外連接和半連接。例如內(nèi)鏈節(jié): select userinfo.*, choice.* from userinfo join choice on (userinf.id = choice.id);

11、子查詢:HiveQL只能在from引導(dǎo)的字句中出現(xiàn)子查詢。 select teacher, MAX(class_num) from (select teacher, count(classname) as class_num from classinfo group by teacher)subq group by teacher;HiveQL的擴展性 HiveQL只有幾十個內(nèi)嵌的函數(shù),但是可以通過編寫UDF(User-Defined Function) 來擴展功能。Hive的UDF包括三種。 UDF(User-Defined Function) 支持一個輸入產(chǎn)生一個輸出。 UDAF(User

12、-Defined Aggregate Function) 支持多個輸入一個輸出。 UDTF(Uers-Defined Table-Generating Function) 支持一個輸入多個輸出。UDF編程示例 UDF類必須繼承自org.apache.hadoop.hive.ql.exec.UDF 類,并且實現(xiàn)evaluate方法。下面為對一個查詢結(jié)果進行大小轉(zhuǎn)化的UDF。package com.cstoreImport org.apache.hadoop.hive.ql.UDF;.Public class lowerORupper extends UDFpublic Text evalute(Text t, String up_or_lower).UDAF編程示例 UDAF類必須繼承自org.apache.hadoop.hive.ql.exec.UDAF 類,并且在內(nèi)部類中實現(xiàn) org.apache.hadoop.hive.ql.exec.UDAFEvaluator接口, UDAFEvaluator接口有五

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論