Chapter8 大數(shù)據(jù)基礎(chǔ)編程、實(shí)驗(yàn)和案例教程-第8章-數(shù)據(jù)倉(cāng)庫(kù)Hive的安裝和使用_第1頁(yè)
Chapter8 大數(shù)據(jù)基礎(chǔ)編程、實(shí)驗(yàn)和案例教程-第8章-數(shù)據(jù)倉(cāng)庫(kù)Hive的安裝和使用_第2頁(yè)
Chapter8 大數(shù)據(jù)基礎(chǔ)編程、實(shí)驗(yàn)和案例教程-第8章-數(shù)據(jù)倉(cāng)庫(kù)Hive的安裝和使用_第3頁(yè)
Chapter8 大數(shù)據(jù)基礎(chǔ)編程、實(shí)驗(yàn)和案例教程-第8章-數(shù)據(jù)倉(cāng)庫(kù)Hive的安裝和使用_第4頁(yè)
Chapter8 大數(shù)據(jù)基礎(chǔ)編程、實(shí)驗(yàn)和案例教程-第8章-數(shù)據(jù)倉(cāng)庫(kù)Hive的安裝和使用_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第8章數(shù)據(jù)倉(cāng)庫(kù)Hive的安裝和使用提綱8.1Hive的安裝8.2Hive的數(shù)據(jù)類(lèi)型8.3Hive基本操作8.4Hive應(yīng)用實(shí)例:WordCount8.5Hive編程的優(yōu)勢(shì)8.1Hive的安裝8.1.1下載安裝文件8.1.2配置環(huán)境變量8.1.3修改配置文件8.1.4安裝并配置MySQL8.1.1下載安裝文件訪問(wèn)Hive官網(wǎng)(/dyn/closer.cgi/hive/)下載安裝文件apache-hive-3.1.2-bin.tar.gz下載完安裝文件以后,需要對(duì)文件進(jìn)行解壓。按照Linux系統(tǒng)使用的默認(rèn)規(guī)范,用戶(hù)安裝的軟件一般都是存放在“/usr/local/”目錄下。請(qǐng)?jiān)贚inux系統(tǒng)中打開(kāi)一個(gè)終端,執(zhí)行如下命令:$sudotar-zxvf./apache-hive-3.1.2-bin.tar.gz-C/usr/local#解壓到/usr/local中$cd/usr/local/$sudomvapache-hive-3.1.2-binhive#將文件夾名改為hive$sudochown-Rhadoop:hadoophive#修改文件權(quán)限8.1.2配置環(huán)境變量為了方便使用,可以把hive命令加入到環(huán)境變量PATH中,從而可以在任意目錄下直接使用hive命令啟動(dòng),請(qǐng)使用vim編輯器打開(kāi)“~/.bashrc”文件進(jìn)行編輯,命令如下:$vim~/.bashrc在該文件的最前面一行添加如下內(nèi)容:exportHIVE_HOME=/usr/local/hiveexportPATH=$PATH:$HIVE_HOME/bin保存該文件并退出vim編輯器,然后,運(yùn)行如下命令使得配置立即生效:$source~/.bashrc8.1.3修改配置文件將“/usr/local/hive/conf”目錄下的hive-default.xml.template文件重命名為hive-default.xml,命令如下:$cd/usr/local/hive/conf$sudomvhive-default.xml.templatehive-default.xml同時(shí),使用vim編輯器新建一個(gè)文件hive-site.xml,命令如下:$cd/usr/local/hive/conf$vimhive-site.xml8.1.3修改配置文件在hive-site.xml中輸入如下配置信息:<?xmlversion="1.0"encoding="UTF-8"standalone="no"?><?xml-stylesheettype="text/xsl"href="configuration.xsl"?><configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value><description>JDBCconnectstringforaJDBCmetastore</description></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value><description>DriverclassnameforaJDBCmetastore</description></property><property><name>javax.jdo.option.ConnectionUserName</name><value>hive</value><description>usernametouseagainstmetastoredatabase</description></property><property><name>javax.jdo.option.ConnectionPassword</name><value>hive</value><description>passwordtouseagainstmetastoredatabase</description></property></configuration>8.1.4安裝并配置MySQL1.安裝MySQL這里采用MySQL數(shù)據(jù)庫(kù)保存Hive的元數(shù)據(jù),而不是采用Hive自帶的derby來(lái)存儲(chǔ)元數(shù)據(jù),因此,需要安裝MySQL數(shù)據(jù)庫(kù)??梢詤⒄铡案戒汢:Linux系統(tǒng)中的MySQL安裝及常用操作”,完成MySQL數(shù)據(jù)庫(kù)的安裝,這里不再贅述。8.1.4安裝并配置MySQL2.下載MySQLJDBC驅(qū)動(dòng)程序?yàn)榱俗孒ive能夠連接到MySQL數(shù)據(jù)庫(kù),需要下載MySQLJDBC驅(qū)動(dòng)程序??梢缘組ySQL官網(wǎng)(/downloads/connector/j/)下載mysql-connector-java-5.1.40.tar.gz。在Linux系統(tǒng)中打開(kāi)一個(gè)終端,在終端中執(zhí)行如下命令解壓縮文件:$cd~$tar-zxvfmysql-connector-java-5.1.40.tar.gz#解壓$#下面將mysql-connector-java-5.1.40-bin.jar拷貝到/usr/local/hive/lib目錄下$cpmysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar/usr/local/hive/lib8.1.4安裝并配置MySQL3.啟動(dòng)MySQL執(zhí)行如下命令啟動(dòng)MySQL,并進(jìn)入“mysql>”命令提示符狀態(tài):$servicemysqlstart#啟動(dòng)MySQL服務(wù)$mysql-uroot-p#登錄MySQL數(shù)據(jù)庫(kù)4.在MySQL中為Hive新建數(shù)據(jù)庫(kù)現(xiàn)在,需要在MySQL數(shù)據(jù)庫(kù)中新建一個(gè)名稱(chēng)為hive的數(shù)據(jù)庫(kù),用來(lái)保存Hive的元數(shù)據(jù)。MySQL中的這個(gè)hive數(shù)據(jù)庫(kù),是與Hive的配置文件hive-site.xml中的“mysql://localhost:3306/hive”對(duì)應(yīng)起來(lái)的,用來(lái)保存Hive元數(shù)據(jù)。在MySQL數(shù)據(jù)庫(kù)中新建hive數(shù)據(jù)庫(kù)的命令,需要在“mysql>”命令提示符下執(zhí)行,具體如下:mysql>createdatabasehive;8.1.4安裝并配置MySQL5.配置MySQL允許Hive接入需要對(duì)MySQL進(jìn)行權(quán)限配置,允許Hive連接到MySQL。mysql>grantallon*.*tohive@localhostidentifiedby'hive';mysql>flushprivileges;6.啟動(dòng)HiveHive是基于Hadoop的數(shù)據(jù)倉(cāng)庫(kù),會(huì)把用戶(hù)輸入的查詢(xún)語(yǔ)句自動(dòng)轉(zhuǎn)換成為MapReduce任務(wù)來(lái)執(zhí)行,并把結(jié)果返回給用戶(hù)。因此,啟動(dòng)Hive之前,需要先啟動(dòng)Hadoop集群,命令如下:$cd/usr/local/hadoop$./sbin/start-dfs.sh8.1.4安裝并配置MySQL然后,再執(zhí)行如下命令啟動(dòng)Hive:$cd/usr/local/hive$./bin/hive8.2Hive的數(shù)據(jù)類(lèi)型類(lèi)型描述示例TINYINT1個(gè)字節(jié)(8位)有符號(hào)整數(shù)1SMALLINT2個(gè)字節(jié)(16位)有符號(hào)整數(shù)1INT4個(gè)字節(jié)(32位)有符號(hào)整數(shù)1BIGINT8個(gè)字節(jié)(64位)有符號(hào)整數(shù)1FLOAT4個(gè)字節(jié)(32位)單精度浮點(diǎn)數(shù)1.0DOUBLE8個(gè)字節(jié)(64位)雙精度浮點(diǎn)數(shù)1.0BOOLEAN布爾類(lèi)型,true/falsetrueSTRING字符串,可以指定字符集“xmu”TIMESTAMP整數(shù)、浮點(diǎn)數(shù)或者字符串1327882394(Unix新紀(jì)元秒)BINARY字節(jié)數(shù)組[0,1,0,1,0,1,0,1]表Hive的基本數(shù)據(jù)類(lèi)型8.2Hive的數(shù)據(jù)類(lèi)型表Hive的集合數(shù)據(jù)類(lèi)型類(lèi)型描述示例ARRAY一組有序字段,字段的類(lèi)型必須相同Array(1,2)MAP一組無(wú)序的鍵/值對(duì),鍵的類(lèi)型必須是原子的,值可以是任何數(shù)據(jù)類(lèi)型,同一個(gè)映射的鍵和值的類(lèi)型必須相同Map(‘a(chǎn)’,1,’b’,2)STRUCT一組命名的字段,字段類(lèi)型可以不同Struct(‘a(chǎn)’,1,1,0)8.3Hive基本操作8.3.1創(chuàng)建數(shù)據(jù)庫(kù)、表、視圖8.3.2刪除數(shù)據(jù)庫(kù)、表、視圖8.3.3修改數(shù)據(jù)庫(kù)、表、視圖8.3.4查看數(shù)據(jù)庫(kù)、表、視圖8.3.5描述數(shù)據(jù)庫(kù)、表、視圖8.3.6向表中裝載數(shù)據(jù)8.3.7查詢(xún)表中數(shù)據(jù)8.3.8向表中插入數(shù)據(jù)或從表中導(dǎo)出數(shù)據(jù)8.3.1創(chuàng)建數(shù)據(jù)庫(kù)、表、視圖創(chuàng)建數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)庫(kù)hivehive>createdatabasehive;創(chuàng)建數(shù)據(jù)庫(kù)hive,因?yàn)閔ive已經(jīng)存在,所以會(huì)拋出異常,加上ifnotexists關(guān)鍵字,則不會(huì)拋出異常hive>createdatabaseifnotexistshive;創(chuàng)建表在hive數(shù)據(jù)庫(kù)中,創(chuàng)建表usr,含三個(gè)屬性id,name,agehive>usehive;hive>createtableifnotexistsusr(idbigint,name

string,age

int);在hive數(shù)據(jù)庫(kù)中,創(chuàng)建表usr,含三個(gè)屬性id,name,age,存儲(chǔ)路徑為“/usr/local/hive/warehouse/hive/usr”hive>createtableifnotexistshive.usr(idbigint,name

string,age

int)>location‘/usr/local/hive/warehouse/hive/usr’;8.3.1創(chuàng)建數(shù)據(jù)庫(kù)、表、視圖創(chuàng)建表在hive數(shù)據(jù)庫(kù)中,創(chuàng)建外部表usr,含三個(gè)屬性id,name,age,可以讀取路徑“/usr/local/data”下以“,”分隔的數(shù)據(jù)。hive>createexternaltableifnotexistshive.usr(idbigint,name

string,age

int)>rowformatdelimitedfieldsterminatedby','location‘/usr/local/data’;在hive數(shù)據(jù)庫(kù)中,創(chuàng)建分區(qū)表usr,含三個(gè)屬性id,name,age,還存在分區(qū)字段sex。hive>createtablehive.usr(idbigint,name

string,age

int)partitionby(sexboolean);在hive數(shù)據(jù)庫(kù)中,創(chuàng)建分區(qū)表usr1,它通過(guò)復(fù)制表usr得到。hive>usehive;hive>createtableifnotexistsusr1likeusr;創(chuàng)建視圖創(chuàng)建視圖little_usr,只包含usr表中id,age屬性hive>createviewlittle_usrasselectid,agefromusr;8.3.2刪除數(shù)據(jù)庫(kù)、表、視圖刪除數(shù)據(jù)庫(kù)刪除數(shù)據(jù)庫(kù)hive,如果不存在會(huì)出現(xiàn)警告hive>dropdatabasehive;刪除數(shù)據(jù)庫(kù)hive,因?yàn)橛衖fexists關(guān)鍵字,即使不存在也不會(huì)拋出異常hive>dropdatabaseifnotexistshive;刪除數(shù)據(jù)庫(kù)hive,加上cascade關(guān)鍵字,可以刪除當(dāng)前數(shù)據(jù)庫(kù)和該數(shù)據(jù)庫(kù)中的表hive>dropdatabaseifnotexistshivecascade;8.3.2刪除數(shù)據(jù)庫(kù)、表、視圖刪除表刪除表usr,如果是內(nèi)部表,元數(shù)據(jù)和實(shí)際數(shù)據(jù)都會(huì)被刪除;如果是外部表,只刪除元數(shù)據(jù),不刪除實(shí)際數(shù)據(jù)hive>droptableifexistsusr;刪除視圖刪除視圖little_usrhive>dropviewifexistslittle_usr;8.3.3修改數(shù)據(jù)庫(kù)、表、視圖修改數(shù)據(jù)庫(kù)為hive數(shù)據(jù)庫(kù)設(shè)置dbproperties鍵值對(duì)屬性值來(lái)描述數(shù)據(jù)庫(kù)屬性信息hive>alterdatabasehivesetdbproperties(‘edited-by’=’lily’);修改表重命名表usr為userhive>altertableusrrenametouser;為表usr增加新分區(qū)hive>altertableusraddifnotexistspartition(age=10);刪除表usr中分區(qū)hive>altertableusrdropifexistspartition(age=10);把表usr中列名name修改為username,并把該列置于age列后hive>altertableusrchangenameusernamestringafterage;8.3.3修改數(shù)據(jù)庫(kù)、表、視圖修改表在對(duì)表usr分區(qū)字段之前,增加一個(gè)新列sexhive>altertableusraddcolumns(sexboolean);刪除表usr中所有字段并重新指定新字段newid,newname,newagehive>altertableusrreplacecolumns(newid

bigint,newname

string,newage

int);為usr表設(shè)置tblproperties鍵值對(duì)屬性值來(lái)描述表的屬性信息hive>altertableusrsettabproperties(‘notes’=’thecolumnsinusrmaybenullexceptid’);修改視圖修改little_usr視圖元數(shù)據(jù)中的tblproperties屬性信息hive>alterviewlittle_usrsettabproperties(‘create_at’=’refertotimestamp’);8.3.4查看數(shù)據(jù)庫(kù)、表、視圖查看數(shù)據(jù)庫(kù)查看Hive中包含的所有數(shù)據(jù)庫(kù)hive>showdatabases;查看Hive中以h開(kāi)頭的所有數(shù)據(jù)庫(kù)hive>showdatabaseslike‘h.*’;查看表和視圖查看數(shù)據(jù)庫(kù)hive中所有表和視圖hive>usehive;hive>showtables;查看數(shù)據(jù)庫(kù)hive中以u(píng)開(kāi)頭的所有表和視圖hive>showtablesinhivelike‘u.*’;8.3.5描述數(shù)據(jù)庫(kù)、表、視圖描述表和視圖查看表usr和視圖little_usr的基本信息,包括列信息等hive>describehive.usr/hive.little_usr;查看表usr和視圖little_usr的詳細(xì)信息,包括列信息、位置信息、屬性信息等hive>describeextendedhive.usr/hive.little_usr;查看表usr中列id的信息hive>describeextendedhive.usr.id;描述數(shù)據(jù)庫(kù)查看數(shù)據(jù)庫(kù)hive的基本信息,包括數(shù)據(jù)庫(kù)中文件位置信息等hive>describedatabasehive;查看數(shù)據(jù)庫(kù)hive的詳細(xì)信息,包括數(shù)據(jù)庫(kù)的基本信息及屬性信息等hive>describedatabaseextendedhive;8.3.6向表中裝載數(shù)據(jù)把目錄’/usr/local/data‘下的數(shù)據(jù)文件中的數(shù)據(jù)裝載進(jìn)usr表并覆蓋原有數(shù)據(jù)hive>loaddatalocalinpath‘/usr/local/data’overwriteintotableusr;把目錄’/usr/local/data‘下的數(shù)據(jù)文件中的數(shù)據(jù)裝載進(jìn)usr表不覆蓋原有數(shù)據(jù)hive>loaddatalocalinpath‘/usr/local/data’intotableusr;把分布式文件系統(tǒng)目錄’hdfs://master_srever/usr/local/data‘下的數(shù)據(jù)文件數(shù)據(jù)裝載進(jìn)usr表并覆蓋原有數(shù)據(jù)hive>loaddatainpath‘hdfs://master_srever/usr/local/data’>overwriteintotableusr;8.3.7查詢(xún)表中數(shù)據(jù)該命令和SQL語(yǔ)句完全相同這里不再贅述。8.3.8向表中插入數(shù)據(jù)或從表中導(dǎo)出數(shù)據(jù)向表usr1中插入來(lái)自u(píng)sr表的數(shù)據(jù)并覆蓋原有數(shù)據(jù)hive>insertoverwritetableusr1>select*fromusrwhereage=10;向表usr1中插入來(lái)自u(píng)sr表的數(shù)據(jù)并追加在原有數(shù)據(jù)后hive>insertintotableusr1>select*fromusr>whereage=10;8.4Hive應(yīng)用實(shí)例:WordCount現(xiàn)在我們通過(guò)一個(gè)實(shí)例——詞頻統(tǒng)計(jì),來(lái)深入學(xué)習(xí)一下Hive的具體使用。首先,需要?jiǎng)?chuàng)建一個(gè)需要分析的輸入數(shù)據(jù)文件,然后編寫(xiě)HiveQL語(yǔ)句實(shí)現(xiàn)WordCount算法,在Unix下實(shí)現(xiàn)步驟如下:(1)創(chuàng)建input目錄,其中input為輸入目錄。命令如下:

$cd/usr/local/hadoop$mkdirinput(2)在input文件夾中創(chuàng)建兩個(gè)測(cè)試文件file1.txt和file2.txt,命令如下:

$cd/usr/local/hadoop/input$echo"helloworld">file1.txt$echo"hellohadoop">file2.txt8.4Hive應(yīng)用實(shí)例:WordCount(3)進(jìn)入hive命令行界面,編寫(xiě)HiveQL語(yǔ)句實(shí)現(xiàn)WordCount算法,命令如下:

$hivehive>createtabledocs(linestring);hive>loaddatainpath'input'overwriteintotabledocs;hive>createtableword_countasselectword,count(1)ascountf

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論