第7講:Hive數(shù)據(jù)倉(cāng)庫(kù)課件_第1頁(yè)
第7講:Hive數(shù)據(jù)倉(cāng)庫(kù)課件_第2頁(yè)
第7講:Hive數(shù)據(jù)倉(cāng)庫(kù)課件_第3頁(yè)
第7講:Hive數(shù)據(jù)倉(cāng)庫(kù)課件_第4頁(yè)
第7講:Hive數(shù)據(jù)倉(cāng)庫(kù)課件_第5頁(yè)
已閱讀5頁(yè),還剩44頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第7講Hive數(shù)據(jù)倉(cāng)庫(kù)

第7講Hive數(shù)據(jù)倉(cāng)庫(kù)

數(shù)據(jù)分析者面臨的問(wèn)題

數(shù)據(jù)日趨龐大,無(wú)論是入庫(kù)和查詢,都出現(xiàn)性能瓶頸用戶的應(yīng)用和分析結(jié)果呈整合趨勢(shì),對(duì)實(shí)時(shí)性和響應(yīng)時(shí)間要求越來(lái)越高使用的模型越來(lái)越復(fù)雜,計(jì)算量指數(shù)級(jí)上升

數(shù)據(jù)分析者面臨的問(wèn)題數(shù)據(jù)分析者期待的解決方案

完美解決性能瓶頸,在可見(jiàn)未來(lái)不容易出現(xiàn)新瓶頸過(guò)去所擁有的技能可以平穩(wěn)過(guò)渡。比如SQL、R轉(zhuǎn)移平臺(tái)的成本有多高?平臺(tái)軟硬件成本,再開(kāi)發(fā)成本,技能再培養(yǎng)成本,維護(hù)成本數(shù)據(jù)分析者期待的解決方案Hive簡(jiǎn)介

起源自facebook由JeffHammerbacher領(lǐng)導(dǎo)的團(tuán)隊(duì)構(gòu)建在Hadoop上的數(shù)據(jù)倉(cāng)庫(kù)框架設(shè)計(jì)目的是讓SQL技能良好,但Java技能較弱的分析師可以查詢海量數(shù)據(jù)2008年facebook把hive項(xiàng)目貢獻(xiàn)給Apache

Hive簡(jiǎn)介Hive

數(shù)據(jù)倉(cāng)庫(kù)工具??梢园袶adoop下的原始結(jié)構(gòu)化數(shù)據(jù)變成Hive中的表支持一種與SQL幾乎完全相同的語(yǔ)言HiveQL。除了不支持更新、索引和事務(wù),幾乎SQL的其它特征都能支持可以看成是從SQL到Map-Reduce的映射器提供shell、JDBC/ODBC、Thrift、Web等接口Hive不適合用于聯(lián)機(jī)事務(wù)處理,也不提供實(shí)時(shí)查詢功能。最適合應(yīng)用在基于大量不可變數(shù)據(jù)的批處理作業(yè)。HiveHive是建立在Hadoop上的數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架。它提供了一系列的工具,可以用來(lái)進(jìn)行數(shù)據(jù)提取轉(zhuǎn)化加載(ETL),這是一種可以存儲(chǔ)、查詢和分析存儲(chǔ)在Hadoop中的大規(guī)模數(shù)據(jù)的機(jī)制。Hive定義了簡(jiǎn)單的類SQL查詢語(yǔ)言,稱為HQL,它允許熟悉SQL的用戶查詢數(shù)據(jù)。同時(shí),這個(gè)語(yǔ)言也允許熟悉MapReduce開(kāi)發(fā)者的開(kāi)發(fā)自定義的mapper和reducer來(lái)處理內(nèi)建的mapper和reducer無(wú)法完成的復(fù)雜的分析工作。第7講:Hive數(shù)據(jù)倉(cāng)庫(kù)ppt課件Hive現(xiàn)狀

Hadoop生態(tài)圈中的重要項(xiàng)目企業(yè)級(jí)數(shù)據(jù)倉(cāng)庫(kù)的主流架構(gòu)之一解決“即席查詢”的問(wèn)題注意Cloudera的Impala項(xiàng)目,號(hào)稱比Hive要快3-30倍兼容SQL是目前大數(shù)據(jù)產(chǎn)品的風(fēng)向標(biāo)Hive現(xiàn)狀體系結(jié)構(gòu)圖體系結(jié)構(gòu)圖1、用戶接口主要有三個(gè):命令行(CLI),客戶端(Client)和WEB界面(WUI)。其中最常用的是CLI,Cli啟動(dòng)的時(shí)候,會(huì)同時(shí)啟動(dòng)一個(gè)Hive服務(wù)。Client是Hive的客戶端,用戶連接至HiveServer。在啟動(dòng)Client模式的時(shí)候,需要指出HiveServer所在節(jié)點(diǎn),并且在該節(jié)點(diǎn)啟動(dòng)HiveServer。WUI是通過(guò)瀏覽器訪問(wèn)Hive。2、元數(shù)據(jù)存儲(chǔ)。Hive將元數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中,如mysql、derby嵌入式數(shù)據(jù)庫(kù)。Hive中的元數(shù)據(jù)包括表的名字,表的列和分區(qū)及其屬性,表的屬性(是否為外部表等),表的數(shù)據(jù)所在目錄等。3、執(zhí)行。解釋器、編譯器、優(yōu)化器完成HiveQL查詢語(yǔ)句從詞法分析、語(yǔ)法分析、編譯、優(yōu)化以及查詢計(jì)劃的生成。生成的查詢計(jì)劃存儲(chǔ)在HDFS中,并在隨后有MapReduce調(diào)用執(zhí)行。4、HDFS存儲(chǔ)。Hive的數(shù)據(jù)存儲(chǔ)在HDFS中,大部分的查詢由MapReduce完成(包含*的查詢,比如select*fromtbl不會(huì)生成MapRedcue任務(wù))。Hive元數(shù)據(jù)存儲(chǔ)Hive將元數(shù)據(jù)存儲(chǔ)在RDBMS中,有三種模式可以連接到數(shù)據(jù)庫(kù):SingleUserMode:此模式連接到一個(gè)In-memory的數(shù)據(jù)庫(kù)Derby,一般用于UnitTest。1、用戶接口主要有三個(gè):命令行(CLI),客戶端(ClienHive安裝

內(nèi)嵌模式:元數(shù)據(jù)保持在內(nèi)嵌的Derby模式,只允許一個(gè)會(huì)話連接本地獨(dú)立模式:在本地安裝Mysql,把元數(shù)據(jù)放到Mysql內(nèi)遠(yuǎn)程模式:元數(shù)據(jù)放置在遠(yuǎn)程的Mysql數(shù)據(jù)庫(kù)Hive安裝內(nèi)嵌模式安裝

下載并解壓Hive內(nèi)嵌模式安裝下載并解壓Hive設(shè)置環(huán)境變量(修改profile文件)設(shè)置環(huán)境變量(修改profile文件)配置文件

配置文件hive-env.sh

cphive-env.sh.templatehive-env.shhive-env.shcphive-env.sh.temhive-site.xml

cphive-default.xml.templatehive-site.xmlhive-site.xmlcphive-default.啟動(dòng)hive

Hive命令行啟動(dòng)方式:直接輸入/hive/bin/hive命令,或者輸入hive-servicecli命令。Hiveweb界面啟動(dòng)方式:輸入hive-servicehwi命令。Hive采用遠(yuǎn)程服務(wù)啟動(dòng)方式:遠(yuǎn)程服務(wù)的端口號(hào)為10000,采用hive--servicehiveserver命令。Hive采用遠(yuǎn)程后臺(tái)啟動(dòng)方式:關(guān)閉Hive終端,但是Hive服務(wù)不退出,采用nohuphive--servicehiveserver命令。啟動(dòng)hiveHive命令行啟動(dòng)方式:直接輸入/hive/b簡(jiǎn)單建刪表測(cè)試

簡(jiǎn)單建刪表測(cè)試一個(gè)常見(jiàn)錯(cuò)誤

一個(gè)常見(jiàn)錯(cuò)誤解決方法

修改hadoop-env.sh解決方法修改hadoop-env.shHive安裝:獨(dú)立模式

可參考網(wǎng)絡(luò)資源:/xqj198404/article/details/9109715/xqj198404/article/details/12166717

Hive安裝:獨(dú)立模式Hive的服務(wù)Hive不僅僅是一個(gè)shell,通過(guò)配置,還可以提供Thrift服務(wù)器、Web接口、元數(shù)據(jù)和JDBC/ODBC服務(wù),具有強(qiáng)大的功能和良好的可擴(kuò)展性。1、Hiveshell執(zhí)行HiveQL(大約相當(dāng)于SQL92標(biāo)準(zhǔn))查看或臨時(shí)設(shè)置Hive參數(shù),只對(duì)當(dāng)前會(huì)話有效創(chuàng)建函數(shù)導(dǎo)入jar包Hive的服務(wù)HiveQL查詢語(yǔ)言HiveQL是一種類似SQL的語(yǔ)言查詢語(yǔ)言HQLSQL數(shù)據(jù)存儲(chǔ)位置HDFSRawDevice或者LocalFS數(shù)據(jù)格式用戶定義系統(tǒng)決定數(shù)據(jù)更新不支持支持索引無(wú)有執(zhí)行MapRedcueExecutor執(zhí)行延遲高低可擴(kuò)展性高低數(shù)據(jù)規(guī)模大小HiveQL查詢語(yǔ)言HiveQL是一種類似SQL的語(yǔ)言查詢HiveQL查詢語(yǔ)言1.查詢語(yǔ)言。由于SQL被廣泛的應(yīng)用在數(shù)據(jù)倉(cāng)庫(kù)中,因此,專門針對(duì)Hive的特性設(shè)計(jì)了類SQL的查詢語(yǔ)言HQL。熟悉SQL開(kāi)發(fā)的開(kāi)發(fā)者可以很方便的使用Hive進(jìn)行開(kāi)發(fā)。

2.數(shù)據(jù)存儲(chǔ)位置。Hive是建立在Hadoop之上的,所有Hive的數(shù)據(jù)都是存儲(chǔ)在HDFS中的。而數(shù)據(jù)庫(kù)則可以將數(shù)據(jù)保存在塊設(shè)備或者本地文件系統(tǒng)中。3.數(shù)據(jù)格式。Hive中沒(méi)有定義專門的數(shù)據(jù)格式,數(shù)據(jù)格式可以由用戶指定,用戶定義數(shù)據(jù)格式需要指定三個(gè)屬性:列分隔符(通常為空格、”\t”、”\x001″)、行分隔符(”\n”)以及讀取文件數(shù)據(jù)的方法(Hive中默認(rèn)有三個(gè)文件格式TextFile,SequenceFile以及RCFile)。由于在加載數(shù)據(jù)的過(guò)程中,不需要從用戶數(shù)據(jù)格式到Hive定義的數(shù)據(jù)格式的轉(zhuǎn)換,因此,Hive在加載的過(guò)程中不會(huì)對(duì)數(shù)據(jù)本身進(jìn)行任何修改,而只是將數(shù)據(jù)內(nèi)容復(fù)制或者移動(dòng)到相應(yīng)的HDFS目錄中。而在數(shù)據(jù)庫(kù)中,不同的數(shù)據(jù)庫(kù)有不同的存儲(chǔ)引擎,定義了自己的數(shù)據(jù)格式。所有數(shù)據(jù)都會(huì)按照一定的組織存儲(chǔ),因此,數(shù)據(jù)庫(kù)加載數(shù)據(jù)的過(guò)程會(huì)比較耗時(shí)。

HiveQL查詢語(yǔ)言1.查詢語(yǔ)言。由于SQL被廣泛的應(yīng)HiveQL查詢語(yǔ)言4.數(shù)據(jù)更新。由于Hive是針對(duì)數(shù)據(jù)倉(cāng)庫(kù)應(yīng)用設(shè)計(jì)的,而數(shù)據(jù)倉(cāng)庫(kù)的內(nèi)容是讀多寫少的。因此,Hive中不支持對(duì)數(shù)據(jù)的改寫和添加,所有的數(shù)據(jù)都是在加載的時(shí)候中確定好的。而數(shù)據(jù)庫(kù)中的數(shù)據(jù)通常是需要經(jīng)常進(jìn)行修改的,因此可以使用INSERTINTO...VALUES添加數(shù)據(jù),使用UPDATE...SET修改數(shù)據(jù)

5.索引。之前已經(jīng)說(shuō)過(guò),Hive在加載數(shù)據(jù)的過(guò)程中不會(huì)對(duì)數(shù)據(jù)進(jìn)行任何處理,甚至不會(huì)對(duì)數(shù)據(jù)進(jìn)行掃描,因此也沒(méi)有對(duì)數(shù)據(jù)中的某些Key建立索引。Hive要訪問(wèn)數(shù)據(jù)中滿足條件的特定值時(shí),需要暴力掃描整個(gè)數(shù)據(jù),因此訪問(wèn)延遲較高。由于MapReduce的引入,Hive可以并行訪問(wèn)數(shù)據(jù),因此即使沒(méi)有索引,對(duì)于大數(shù)據(jù)量的訪問(wèn),Hive仍然可以體現(xiàn)出優(yōu)勢(shì)。數(shù)據(jù)庫(kù)中,通常會(huì)針對(duì)一個(gè)或者幾個(gè)列建立索引,因此對(duì)于少量的特定條件的數(shù)據(jù)的訪問(wèn),數(shù)據(jù)庫(kù)可以有很高的效率,較低的延遲。由于數(shù)據(jù)的訪問(wèn)延遲較高,決定了Hive不適合在線數(shù)據(jù)查詢。

6.執(zhí)行。Hive中大多數(shù)查詢的執(zhí)行是通過(guò)Hadoop提供的MapReduce來(lái)實(shí)現(xiàn)的(類似select*fromtbl的查詢不需要MapReduce)。而數(shù)據(jù)庫(kù)通常有自己的執(zhí)行引擎。

HiveQL查詢語(yǔ)言4.數(shù)據(jù)更新。由于Hive是針對(duì)數(shù)HiveQL查詢語(yǔ)言7.執(zhí)行延遲。之前提到,Hive在查詢數(shù)據(jù)的時(shí)候,由于沒(méi)有索引,需要掃描整個(gè)表,因此延遲較高。另外一個(gè)導(dǎo)致Hive執(zhí)行延遲高的因素是MapReduce框架。由于MapReduce本身具有較高的延遲,因此在利用MapReduce執(zhí)行Hive查詢時(shí),也會(huì)有較高的延遲。相對(duì)的,數(shù)據(jù)庫(kù)的執(zhí)行延遲較低。當(dāng)然,這個(gè)低是有條件的,即數(shù)據(jù)規(guī)模較小,當(dāng)數(shù)據(jù)規(guī)模大到超過(guò)數(shù)據(jù)庫(kù)的處理能力的時(shí)候,Hive的并行計(jì)算顯然能體現(xiàn)出優(yōu)勢(shì)。8.可擴(kuò)展性。由于Hive是建立在Hadoop之上的,因此Hive的可擴(kuò)展性是和Hadoop的可擴(kuò)展性是一致的。而數(shù)據(jù)庫(kù)由于ACID語(yǔ)義的嚴(yán)格限制,擴(kuò)展行非常有限。9.數(shù)據(jù)規(guī)模。由于Hive建立在集群上并可以利用MapReduce進(jìn)行并行計(jì)算,因此可以支持很大規(guī)模的數(shù)據(jù);對(duì)應(yīng)的,數(shù)據(jù)庫(kù)可以支持的數(shù)據(jù)規(guī)模較小。

HiveQL查詢語(yǔ)言7.執(zhí)行延遲。之前提到,Hive在查HiveQL查詢語(yǔ)言Hive安裝與部署成功之后,在命令行輸入hive進(jìn)入shell。1、退出shell:Hive>quit;2、查看已有表

Hive>showtables;3、查看表結(jié)構(gòu)Hive>describetablename;HiveQL查詢語(yǔ)言Hive安裝與部署成功之后,在命令行輸建表CreateTableCREATE[EXTERNAL]TABLE[IFNOTEXISTS]table_name[(col_namedata_type[COMMENTcol_comment],...)][COMMENTtable_comment][PARTITIONEDBY(col_namedata_type[COMMENTcol_comment],...)][CLUSTEREDBY(col_name,col_name,...)[SORTEDBY(col_name[ASC|DESC],...)]INTOnum_bucketsBUCKETS][ROWFORMATrow_format][STOREDASfile_format][LOCATIONhdfs_path]建表CreateTableCREATETABLE創(chuàng)建一個(gè)指定名字的表。如果相同名字的表已經(jīng)存在,則拋出異常;用戶可以用IFNOTEXIST選項(xiàng)來(lái)忽略這個(gè)異常。EXTERNAL關(guān)鍵字可以讓用戶創(chuàng)建一個(gè)外部表,在建表的同時(shí)指定一個(gè)指向?qū)嶋H數(shù)據(jù)的路徑(LOCATION),Hive創(chuàng)建內(nèi)部表時(shí),會(huì)將數(shù)據(jù)移動(dòng)到數(shù)據(jù)倉(cāng)庫(kù)指向的路徑;若創(chuàng)建外部表,僅記錄數(shù)據(jù)所在的路徑,不對(duì)數(shù)據(jù)的位置做任何改變。在刪除表的時(shí)候,內(nèi)部表的元數(shù)據(jù)和數(shù)據(jù)會(huì)被一起刪除,而外部表只刪除元數(shù)據(jù),不刪除數(shù)據(jù)。LIKE允許用戶復(fù)制現(xiàn)有的表結(jié)構(gòu),但是不復(fù)制數(shù)據(jù)。用戶在建表的時(shí)候可以自定義SerDe或者使用自帶的SerDe。如果沒(méi)有指定ROWFORMAT或者ROWFORMATDELIMITED,將會(huì)使用自帶的SerDe。在建表的時(shí)候,用戶還需要為表指定列,用戶在指定表的列的同時(shí)也會(huì)指定自定義的SerDe,Hive通過(guò)SerDe確定表的具體的列的數(shù)據(jù)。如果文件數(shù)據(jù)是純文本,可以使用STOREDASTEXTFILE。如果數(shù)據(jù)需要壓縮,使用STOREDASSEQUENCE。有分區(qū)的表可以在創(chuàng)建的時(shí)候使用PARTITIONEDBY語(yǔ)句。一個(gè)表可以擁有一個(gè)或者多個(gè)分區(qū),每一個(gè)分區(qū)單獨(dú)存在一個(gè)目錄下。而且,表和分區(qū)都可以對(duì)某個(gè)列進(jìn)行CLUSTEREDBY操作,將若干個(gè)列放入一個(gè)桶(bucket)中。也可以利用SORTBY對(duì)數(shù)據(jù)進(jìn)行排序。這樣可以為特定應(yīng)用提高性能。表名和列名不區(qū)分大小寫,SerDe和屬性名區(qū)分大小寫。表和列的注釋是字符串。CREATETABLE創(chuàng)建一個(gè)指定名字的表。如果相同名字創(chuàng)建表

創(chuàng)建表創(chuàng)建表

創(chuàng)建表列類型Hive支持的數(shù)據(jù)類型如下:原生類型:TINYINTSMALLINTINTBIGINTBOOLEANFLOATDOUBLESTRINGBINARY

(Hive

0.8.0以上才可用)TIMESTAMP

(Hive

0.8.0以上才可用)復(fù)合類型:arrays:

ARRAY<data_type>maps:

MAP<primitive_type,data_type>structs:

STRUCT<col_name:data_type[COMMENTcol_comment],...>union:

UNIONTYPE<data_type,data_type,...>列類型Hive中表的類型Hive沒(méi)有專門的數(shù)據(jù)存儲(chǔ)格式,也沒(méi)有為數(shù)據(jù)建立索引,用戶可以非常自由的組織Hive中的表,只需要在創(chuàng)建表的時(shí)候告訴Hive數(shù)據(jù)中的列分隔符和行分隔符,Hive就可以解析數(shù)據(jù)。Hive中所有的數(shù)據(jù)都存儲(chǔ)在HDFS中,Hive中包含以下數(shù)據(jù)模型:Table,ExternalTable,Partition,Bucket。(1)普通表普通表的創(chuàng)建就是一個(gè)表對(duì)應(yīng)一個(gè)表名和表名對(duì)應(yīng)的文件。(2)外部表建表的同時(shí)指定一個(gè)指向?qū)嶋H數(shù)據(jù)的路徑,創(chuàng)建內(nèi)部表時(shí)會(huì)將數(shù)據(jù)移動(dòng)到數(shù)據(jù)倉(cāng)庫(kù)指向的路徑;若創(chuàng)建外部表,僅記錄數(shù)據(jù)所在的路徑,不對(duì)數(shù)據(jù)的位置做任何改變。刪除表時(shí),內(nèi)部表的元數(shù)據(jù)和數(shù)據(jù)一起被刪,而外部表只刪除元數(shù)據(jù),不刪除數(shù)據(jù)。(3)分區(qū)表在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=CAHive中表的類型Hive沒(méi)有專門的數(shù)據(jù)存儲(chǔ)格式,也沒(méi)有為加載數(shù)據(jù)Hive不支持一條一條用insert語(yǔ)句進(jìn)行插入操作,也不支持update操作。數(shù)據(jù)以load的方式加載到建立好的表中,一旦導(dǎo)入,不可修改。LOADDATA[LOCAL]INPATH'filepath'[OVERWRITE]INTOTABLEtablename[PARTITION(partcol1=val1,partcol2=val2...)]Load操作只是單純的復(fù)制/移動(dòng)操作,將數(shù)據(jù)文件移動(dòng)到Hive表對(duì)應(yīng)的位置。filepath可以是:相對(duì)路徑,例如:project/data1絕對(duì)路徑,例如:/user/hive/project/data1包含模式的完整URI,例如:hdfs://namenode:9000/user/hive/project/data1加載數(shù)據(jù)Hive不支持一條一條用insert語(yǔ)句進(jìn)行插入操作加載的目標(biāo)可以是一個(gè)表或者分區(qū)。如果表包含分區(qū),必須指定每一個(gè)分區(qū)的分區(qū)名。filepath可以引用一個(gè)文件(這種情況下,Hive會(huì)將文件移動(dòng)到表所對(duì)應(yīng)的目錄中)或者是一個(gè)目錄(在這種情況下,Hive會(huì)將目錄中的所有文件移動(dòng)至表所對(duì)應(yīng)的目錄中)。如果指定了LOCAL,那么:load命令會(huì)去查找本地文件系統(tǒng)中的filepath。如果發(fā)現(xiàn)是相對(duì)路徑,則路徑會(huì)被解釋為相對(duì)于當(dāng)前用戶的當(dāng)前路徑。用戶也可以為本地文件指定一個(gè)完整的URI,比如:file:///user/hive/project/data1.load命令會(huì)將filepath中的文件復(fù)制到目標(biāo)文件系統(tǒng)中。目標(biāo)文件系統(tǒng)由表的位置屬性決定。被復(fù)制的數(shù)據(jù)文件移動(dòng)到表的數(shù)據(jù)對(duì)應(yīng)的位置。如果沒(méi)有指定LOCAL關(guān)鍵字,如果filepath指向的是一個(gè)完整的URI,hive會(huì)直接使用這個(gè)URI。否則:如果沒(méi)有指定schema或者authority,Hive會(huì)使用在hadoop配置文件中定義的schema和authority,

指定了Namenode的URI。如果路徑不是絕對(duì)的,Hive相對(duì)于/user/進(jìn)行解釋。Hive會(huì)將filepath中指定的文件內(nèi)容移動(dòng)到table(或者partition)所指定的路徑中。如果使用了OVERWRITE關(guān)鍵字,則目標(biāo)表(或者分區(qū))中的內(nèi)容(如果有)會(huì)被刪除,然后再將filepath指向的文件/目錄中的內(nèi)容添加到表/分區(qū)中。如果目標(biāo)表(分區(qū))已經(jīng)有一個(gè)文件,并且文件名和filepath中的文件名沖突,那么現(xiàn)有的文件會(huì)被新文件所替代。加載的目標(biāo)可以是一個(gè)表或者分區(qū)。如果表包含分區(qū),必須指定每一插入數(shù)據(jù)

插入數(shù)據(jù)SELECT查詢SELECT[ALL|DISTINCT]select_expr,select_expr,...FROMtable_reference[WHEREwhere_condition][GROUPBYcol_list][CLUSTERBYcol_list|[DISTRIBUTEBYcol_list][SORTBYcol_list]][LIMITnumber]一個(gè)SELECT語(yǔ)句可以是一個(gè)union查詢或一個(gè)子查詢的一部分table_reference是查詢的輸入,可以是一個(gè)普通表、一個(gè)視圖、一個(gè)join或一個(gè)子查詢簡(jiǎn)單查詢。例如,下面這一語(yǔ)句從t1表中查詢所有列的信息。SELECT*FROMt1WHEREClauseWHEREClause是一個(gè)布爾表達(dá)式,不支持where子句中的in,exit或子查詢SELECT查詢SELECT[ALL|DISTINCT使用ALL和DISTINCT選項(xiàng)區(qū)分對(duì)重復(fù)記錄的處理。默認(rèn)是ALL,表示查詢所有記錄。DISTINCT表示去掉重復(fù)的記錄。hive>SELECTcol1,col2FROMt113131425hive>SELECTDISTINCTcol1,col2FROMt1131425使用ALL和DISTINCT選項(xiàng)區(qū)分對(duì)重復(fù)記錄的處理。默認(rèn)是基于Partition的查詢一般SELECT查詢會(huì)掃描整個(gè)表(除非是為了抽樣查詢)。但是如果一個(gè)表使用PARTITIONEDBY子句建表,查詢就可以利用分區(qū)剪枝(inputpruning)的特性,只掃描一個(gè)表中它關(guān)心的那一部分。Hive當(dāng)前的實(shí)現(xiàn)是,只有分區(qū)斷言出現(xiàn)在離FROM子句最近的那個(gè)WHERE子句中,才會(huì)啟用分區(qū)剪枝。例如,如果page_views表使用date列分區(qū),以下語(yǔ)句只會(huì)讀取分區(qū)為‘2008-03-01’的數(shù)據(jù)。SELECTpage_views.*FROMpage_viewsWHEREpage_views.date>='2008-03-01'ANDpage_views.date<='2008-03-31';基于Partition的查詢查詢

查詢連接HiveQL的連接分為內(nèi)連接、左向外連接、右向外連接、全外連接和半連接5種。例如:Selectuserinfor.*,choice.*fromuserinforjoinchoiceon(userinfor.id=choice.userid);連接HiveQL的連接分為內(nèi)連接、左向外連接、右向外連接、全表連接

表連接JDBC/ODBC接口

用戶可以像連接傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)一樣使用JDBC或ODBC連接Hive目前還不成熟JDBC/ODBC接口JDBC的具體連接過(guò)程

1.使用jdbc的方式連接Hive,首先做的事情就是需要啟動(dòng)hive的ThriftServer,否則連接hive的時(shí)候會(huì)報(bào)connectionrefused的錯(cuò)誤。啟動(dòng)命令如下:hive--servicehiveserver2.新建java項(xiàng)目,然后將hive/lib下的所有jar包和hadoop的核心jar包hadoop-0.20.2-core.jar添加到項(xiàng)目的類路徑上。

JDBC的具體連接過(guò)程樣板代碼

publicstaticvoidmain(String[]args)throwsException{//TODOAuto-g

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論