



版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、簡(jiǎn)介Hive的組成Hive的數(shù)據(jù)模型查詢(xún)語(yǔ)言Hive 是一個(gè)構(gòu)建在Hadoop 上的數(shù)據(jù)倉(cāng)庫(kù)平臺(tái),其設(shè)計(jì)目標(biāo)是使Hadoop上的數(shù)據(jù)操作與傳統(tǒng)SQL結(jié)合,讓熟悉SQL編程的開(kāi)發(fā)人員能夠向Hadoop平臺(tái)遷移。Hive可以在HDFS上構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)來(lái)存儲(chǔ)結(jié)構(gòu)化的數(shù)據(jù),這些數(shù)據(jù)來(lái)源于HDFS上的原始數(shù)據(jù), Hive提供了類(lèi)似SQL的查詢(xún)語(yǔ)言HiveQL,可以執(zhí)行查詢(xún),變換數(shù)據(jù)等操作。通過(guò)解析,HiveQL語(yǔ)言在底層被轉(zhuǎn)化為相應(yīng)的MapReduce操作。 Hive的體系結(jié)構(gòu) Hadoop HJobTrackerNameNode HiveDriver(Compiler,Optimizer,Executo
2、r)ThriftServerCLIJDBC/ODBCWebGUIMetastoreHive相關(guān)組件: 外部接口:Hive提供了例如命令行(CLI)、Web界面等用戶(hù)接口, 還提供了應(yīng)用程序接口(API)例如 JDBC,ODBC等。 Thrift服務(wù)器:Hive Thrift服務(wù)器是一種跨語(yǔ)言服務(wù)的可伸縮軟件框架。它結(jié)合律功能強(qiáng)大的軟件堆棧的代碼生成引擎,可以無(wú)縫的與C+、C#、Java、Python、PHP和Ruby結(jié)合。Thrift允許用戶(hù)簡(jiǎn)單地定義文件中的數(shù)據(jù)類(lèi)型和服務(wù)接口,編譯器生成代碼來(lái)實(shí)現(xiàn)RPC客戶(hù)端和服務(wù)器之間的通信。 Hive內(nèi)部集成了Thrift服務(wù),支持在多種語(yǔ)言中運(yùn)行Hiv
3、e命令,使 客戶(hù)端可以跨平臺(tái)連接Hive。Hive相關(guān)組件: 解析器(Driver):包括解釋器,編譯器,優(yōu)化器,執(zhí)行器,通過(guò)這一系列對(duì)HiveQL查詢(xún)語(yǔ)句的處理,最后生成查詢(xún)計(jì)劃。解析器管理著HiveQL語(yǔ)句在編譯,優(yōu)化和執(zhí)行時(shí)的生命周期。當(dāng)接收到一個(gè)HiveQL查詢(xún)語(yǔ)句時(shí),解析器會(huì)創(chuàng)建一個(gè)相對(duì)的句柄,這個(gè)句柄被用來(lái)追蹤執(zhí)行時(shí)間,輸出行數(shù)等數(shù)據(jù)。 Hadoop:數(shù)據(jù)倉(cāng)庫(kù)和查詢(xún)計(jì)劃存儲(chǔ)在HDFS上,計(jì)算過(guò)程由MapReduce執(zhí)行。Hive相關(guān)組件: 元數(shù)據(jù)庫(kù)(Metastore):管理系統(tǒng)目錄,通常存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)如MySQL,Derby中。Hive所有其他的組件都會(huì)與它進(jìn)行交互。Hive的
4、元數(shù)據(jù)中保存了表的屬性和服務(wù)信息,為查詢(xún)操作提供依據(jù),默認(rèn)的元數(shù)據(jù)庫(kù)是內(nèi)部的Derby,這種情況下metastore和其他Hive服務(wù)運(yùn)行在同一個(gè)Java虛擬機(jī)里,只能允許建立單個(gè)會(huì)話(huà),要實(shí)現(xiàn)多用戶(hù)多會(huì)話(huà)支持,需要配置一個(gè)獨(dú)立的元數(shù)據(jù)庫(kù)。數(shù)據(jù)在Hive里組織成表,分區(qū)和桶的形式 表:Hive里的表類(lèi)似于關(guān)系數(shù)據(jù)庫(kù)中的表。每個(gè)表都有一個(gè)對(duì)應(yīng)的 HDFS目錄。表中的數(shù)據(jù)被序列化后存儲(chǔ)在該目錄的文件中。 Hive提供了內(nèi)置的序列化格式。用戶(hù)還可以通過(guò)自定義序列化 和反序列化的方法去支持新的數(shù)據(jù)格式。每張表的序列化格式 存儲(chǔ)在原數(shù)據(jù)庫(kù)中,并在查詢(xún)編譯和執(zhí)行時(shí)被自動(dòng)調(diào)用。Hive 同時(shí)還支持?jǐn)?shù)據(jù)存儲(chǔ)在N
5、FS,本地目錄的外部表。數(shù)據(jù)在Hive里組織成表,分區(qū)和桶的形式 分區(qū):分區(qū)是表的部分列的集合。一個(gè)表可以有一個(gè)或者多個(gè)分區(qū), 這些分區(qū)確定了數(shù)據(jù)在表目錄下的分布情況。假設(shè)表T的數(shù) 據(jù)是在/wh/T目錄下。如果T在列ds和ctry上被分區(qū),那么 ds值為20090101和ctry值為US的數(shù)據(jù)將會(huì)被存儲(chǔ)到 /wh/T/ds=20090101/ctry=US的目錄下。 桶:在每個(gè)分區(qū)中的數(shù)據(jù)可以根據(jù)列的哈希值進(jìn)一步劃分成桶,每 個(gè)桶在分區(qū)目錄下都存在一個(gè)文件中。Hive支持的數(shù)據(jù)類(lèi)型(基本類(lèi)型) 基本類(lèi)型基本類(lèi)型大小大小描述描述TINYINT1字節(jié)有符號(hào)整數(shù)SMALLINT2字節(jié)有符號(hào)整數(shù)INT
6、4字節(jié)有符號(hào)整數(shù)BIGINT8字節(jié)有符號(hào)整數(shù)FLOAT4字節(jié)單精度浮點(diǎn)數(shù)DOUBLE8字節(jié)雙精度浮點(diǎn)數(shù)BOOLEAN取true/falseSTRING最大2GB字符串,類(lèi)似于sql的varcharHive支持的數(shù)據(jù)類(lèi)型(復(fù)雜類(lèi)型)復(fù)雜類(lèi)型復(fù)雜類(lèi)型大小大小描述描述ARRAY不限一組有序字段,字段類(lèi)型必須相同MAP不限無(wú)序鍵值對(duì),鍵值內(nèi)部字段類(lèi)型必須相同STRUCT不限一組字段,字段類(lèi)型可以不同Hive提供了類(lèi)似于SQL的查詢(xún)語(yǔ)言 HiveQL。 HiveQL支持選擇,投影,連接,聚合,合并以及From中嵌套的子查詢(xún)語(yǔ)句。 HiveQL允許在創(chuàng)建表的時(shí)候申明表的序列化格式,分區(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特有的,用來(lái)指定數(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,并且對(duì)name進(jìn)行分區(qū),創(chuàng)建命令為: create table userinfo (id int) partitioned by (name string) row format delimited fields terminated by t; 創(chuàng)建桶:可以把表或者是分區(qū)組織成桶,桶是按行分開(kāi)組織特定字段,每個(gè)桶對(duì)應(yīng)一個(gè)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的常用操作 多表插入:在同一條語(yǔ)句中,把讀取的同一份元數(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、子查詢(xún):HiveQL只能在from引導(dǎo)的字句中出現(xiàn)子查詢(xún)。 select teacher, MAX(class_num) from (select teacher, count(classname) as class_num from classinfo group by teacher)subq group by teacher;HiveQL的擴(kuò)展性 HiveQL只有幾十個(gè)內(nèi)嵌的函數(shù),但是可以通過(guò)編寫(xiě)UDF(User-Defined Function) 來(lái)擴(kuò)展功能。Hive的UDF包括三種。 UDF(User-Defined Function) 支持一個(gè)輸入產(chǎn)生一個(gè)輸出。 UDAF(User
12、-Defined Aggregate Function) 支持多個(gè)輸入一個(gè)輸出。 UDTF(Uers-Defined Table-Generating Function) 支持一個(gè)輸入多個(gè)輸出。UDF編程示例 UDF類(lèi)必須繼承自org.apache.hadoop.hive.ql.exec.UDF 類(lèi),并且實(shí)現(xiàn)evaluate方法。下面為對(duì)一個(gè)查詢(xún)結(jié)果進(jìn)行大小轉(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類(lèi)必須繼承自org.apache.hadoop.hive.ql.exec.UDAF 類(lèi),并且在內(nèi)部類(lèi)中實(shí)現(xiàn) org.apache.hadoop.hive.ql.exec.UDAFEvaluator接口, UDAFEvaluator接口有五
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025計(jì)時(shí)工資勞動(dòng)合同
- 2025年:探討合同法在維護(hù)債權(quán)人權(quán)益方面的作用
- 2025年店面租賃合同店面租賃協(xié)議
- 2024年動(dòng)葉可調(diào)軸流電站用風(fēng)機(jī)投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 2025【機(jī)械設(shè)備購(gòu)銷(xiāo)合同】機(jī)械設(shè)備供貨合同范本
- 2025屆大學(xué)畢業(yè)生在簽訂就業(yè)協(xié)議、勞動(dòng)合同中應(yīng)關(guān)注的關(guān)鍵事項(xiàng)
- 2025高速公路服務(wù)區(qū)餐飲合作經(jīng)營(yíng)合同
- 2025房屋裝修合同公積金貸款
- 2025商品交易市場(chǎng)商位租賃經(jīng)營(yíng)合同
- 2025機(jī)密協(xié)議合同范本參考文獻(xiàn)
- 小學(xué)班主任工作案例分析4篇
- D建筑消防設(shè)施故障維修記錄表
- DB43∕T 497-2009 博落回果-行業(yè)標(biāo)準(zhǔn)
- 黑龍江省哈爾濱市恒泰石材有限公司(擴(kuò)大區(qū))建筑用凝灰?guī)r
- 創(chuàng)意綜藝風(fēng)脫口秀活動(dòng)策劃PPT模板
- 棗樹(shù)桃小食心蟲(chóng)
- 防蠅防鼠防蟲(chóng)情況記錄表
- 大客戶(hù)營(yíng)銷(xiāo)技巧ppt課件
- C++優(yōu)秀課件PPT
- 團(tuán)險(xiǎn)新產(chǎn)品契約及核保細(xì)則
- 定向鉆(拉管)施工方案
評(píng)論
0/150
提交評(píng)論