Hive的基本应用
| 實驗 目的 要求 | ? 目的:
? | ||||||||||||
| ? ? ? ? ? 實 驗 環(huán) 境 ? ? ? ? ? | ?
? ? ? ? |
?
練習(xí)內(nèi)容
任務(wù)一:Hive DDL的使用;
1、使用命令“hive”啟動hive,進(jìn)入Hive控制臺;
2、創(chuàng)建內(nèi)部表;
3、創(chuàng)建外部表;
4、創(chuàng)建分區(qū)表
5、使用hive DDL命令進(jìn)行一些簡單的操作;
任務(wù)二:Hive DML的使用;
1、創(chuàng)建文本并寫入數(shù)據(jù);
2、進(jìn)行DML操作;
3、創(chuàng)建hdfs用于存放文件的位置,并查看是否創(chuàng)建成功;
4、上傳數(shù)據(jù)文件至hdfs;
5、查看上傳的文件內(nèi)容;
6、對上傳的數(shù)據(jù)文件進(jìn)行基本操作;
7、將查詢結(jié)果插入hive表中;
8、導(dǎo)出hive的表數(shù)據(jù);
9、查看導(dǎo)出的數(shù)據(jù);
?
任務(wù)三:Hive內(nèi)置函數(shù)的基本操作;
1、獲取所有函數(shù);
2、查看指定函數(shù)的使用方法;
3、進(jìn)行表操作;
4、查看concat的使用方法;
5、連接ename,job字段;
任務(wù)四:Hive UDF開發(fā);
1、創(chuàng)建maven工程項目Hive;
1.1、創(chuàng)建項目;
?
1.2、修改pom.xml文件,添加指定依賴;
2、Hive UDF開發(fā);
2.1、編寫HelloUDF.Java文件;
2.2、導(dǎo)出項目為jar包;
2.3、上傳jar包至集群中;
3、編輯jar包上傳至服務(wù)器,并將自定義函數(shù)UDF添加到Hive中;
4、查看自定義函數(shù)中是否有以上傳的;
5、使用自定義函數(shù)進(jìn)行查詢操作;
?
任務(wù)五:調(diào)優(yōu)策略;
1、并行執(zhí)行及JVM重用;
2、推測執(zhí)行,合并小文件;
?
出現(xiàn)的問題與解決方案
排錯一:
錯誤:裝載hdfs至hive失敗
排錯思路:
- 查看指定目錄是否正確;
- 查看指定文件是否正確;
- 查看命令應(yīng)用是否正確;
原因分析:之前在上傳數(shù)據(jù)文件至hdfs時,系統(tǒng)默認(rèn)刪除了源文件
解決方案:重新編寫數(shù)據(jù)文件再次上傳;
排錯二:
錯誤:運行自定義函數(shù)失敗;
排錯思路:
- 檢查jar包是否合適;
- 檢查環(huán)境是否合適;
- 檢自定義函數(shù)是否正確
原因分析:開發(fā)環(huán)境開發(fā)自定義函數(shù)時在jdk1.8環(huán)境,而Hadoop集群環(huán)境中使用的是jdk1.7環(huán)境,jar包jdk版本過高;
解決方案:更改maven項開發(fā)環(huán)境為jdk1.7版本,重新打包項目為jar包上傳至hdfs中使用;
?
知識拓展
1. Hive介紹
Hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供類SQL查詢功能。
Hive是SQL解析引擎,它將SQL語句轉(zhuǎn)譯成M/R Job然后在Hadoop執(zhí)行。
?
2. Hive架構(gòu)
??? 用戶接口,包括 CLI,JDBC/ODBC,WebUI
??? 元數(shù)據(jù)存儲,通常是存儲在關(guān)系數(shù)據(jù)庫如 mysql, derby 中
??? 解釋器、編譯器、優(yōu)化器、執(zhí)行器
??? Hadoop:用 HDFS 進(jìn)行存儲,利用 MapReduce 進(jìn)行計算
Ps:hive的元數(shù)據(jù)并不存放在hdfs上,而是存儲在數(shù)據(jù)庫中(metastore),目前只支持 mysql、derby。Hive 中的元數(shù)據(jù)包括表的名字,表的列和分區(qū)及其屬性,表的屬性(是否為外部表等),表的數(shù)據(jù)所在目錄等。
元數(shù)據(jù)就是描述數(shù)據(jù)的數(shù)據(jù),而Hive的數(shù)據(jù)存儲在Hadoop HDFS
數(shù)據(jù)還是原來的文本數(shù)據(jù),但是現(xiàn)在有了個目錄規(guī)劃。
?
3. Hive與Hadoop的關(guān)系
Hive利用HDFS存儲數(shù)據(jù),利用MapReduce查詢數(shù)據(jù)。
?
4. Hive安裝部署
Hive只是一個工具,不需要集群配置。
export HIVE_HOME=/usr/local/hive-2.0.1
export PATH=PATH:
HIVE_HOME/bin
配置MySql,如果不進(jìn)行配置,默認(rèn)使用derby數(shù)據(jù)庫,但是不好用,在哪個地方執(zhí)行./hive命令,哪兒就會創(chuàng)建一個metastore_db
MySQL安裝到其中某一個節(jié)點上即可。
?
5. Hive的thrift服務(wù)
可以安裝在某一個節(jié)點,并發(fā)布成標(biāo)準(zhǔn)服務(wù),在其他節(jié)點使用beeline方法。
啟動方式,(假如是在master上):
啟動為前臺服務(wù):bin/hiveserver2
啟動為后臺:nohup bin/hiveserver2 1>/var/log/hiveserver.log 2>/var/log/hiveserver.err &
?
連接方法:
hive/bin/beeline 回車,進(jìn)入beeline的命令界面
輸入命令連接hiveserver2
beeline> !connect jdbc:hive2://master:10000
beeline> !connect jdbc:hive2://localhost:10000
(master是hiveserver2所啟動的那臺主機(jī)名,端口默認(rèn)是10000)
總結(jié)
- 上一篇: HBASE_API的应用
- 下一篇: Docker的使用(五:Docker中的