您好,登錄后才能下訂單哦!
構(gòu)建數(shù)據(jù)倉(cāng)庫(kù) (Slave1)
1、解壓數(shù)據(jù)庫(kù)
tar -zxvf apache-hive-1.2.2-bin.tar.gz /usr/local/
cd /usr/local/
mv apache-hive-1.2.2 hive
2、為hive添加環(huán)境變量
編輯/etc/profile文件,增加hive相關(guān)的環(huán)境變量配置
profile文件編輯完成后,執(zhí)行下面命令,讓配置生效,命令是
3、配置hive-site.xml
hive-site.xml相關(guān)的配置
cd /usr/local/hive/conf
cp hive-default.xml.template hive-site.xml
然后用hadoop創(chuàng)建目錄
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -mkdir -p /tmp/hive/
給剛才新建的目錄賦予讀寫(xiě)權(quán)限,執(zhí)行命令:
hadoop fs -chmod 777 /user/hive/warehouse
hadoop fs -chmod 777 /tmp/hive
之所以創(chuàng)建目錄是因?yàn)閔ive-site-xml里有這樣的配置
檢查目錄是否創(chuàng)建成功
hadoop fs -ls /user/hive/
hadoop fs -ls /tmp/
修改hive-site.xml中的臨時(shí)目錄
將hive-site.xml文件中的${system:java.io.tmpdir}替換為hive的臨時(shí)目錄,例如我替換為/usr/local/hive/tmp,將${system:user.name}都替換為root, 并且賦予讀寫(xiě)權(quán)限
注意要把所有的都替換,這里用正則替換
sed -i 's@${system:java.io.tmpdir}@/usr/local/hive/tmp/@g' hive-site.xml
sed -i 's@${system:user.name}@root@g' hive-site.xml
修改hive-site.xml數(shù)據(jù)庫(kù)相關(guān)的配置
搜索javax.jdo.option.ConnectionURL,將該name對(duì)應(yīng)的value修改為MySQL的地址
搜索javax.jdo.option.ConnectionDriverName,將該name對(duì)應(yīng)的value修改為MySQL驅(qū)動(dòng)類路徑
搜索javax.jdo.option.ConnectionUserName,將對(duì)應(yīng)的value修改為MySQL數(shù)據(jù)庫(kù)登錄名:
搜索javax.jdo.option.ConnectionPassword,將對(duì)應(yīng)的value修改為MySQL數(shù)據(jù)庫(kù)的登錄密碼:
搜索hive.metastore.schema.verification,將對(duì)應(yīng)的value修改為false:
4、加載mysql驅(qū)動(dòng)
將MySQL驅(qū)動(dòng)包上載到lib目錄
cd /usr/local/hive/lib/
wget ftp://172.18.79.77/mysql-connector-java-5.1.5-bin.jar
注意這里的地址是我的私有地址,可以去百度找mysql驅(qū)動(dòng)包,或者在我的博客里下載(因?yàn)?1cto上重復(fù)的資料不能上傳,很無(wú)語(yǔ),就隨便加了個(gè)txt文件和驅(qū)動(dòng)包弄成一個(gè)壓縮包再上傳的)。
5、修改hive-env.sh
新建hive-env.sh文件并進(jìn)行修改
cd /usr/local/hive/conf
將hive-env.sh.template文件復(fù)制一份,并且改名為hive-env.sh
cp hive-env.sh.template hive-env.sh
打開(kāi)hive-env.sh配置并且添加以下內(nèi)容:
export HADOOP_HOME=/usr/local/hadoop
export HIVE_CONF_DIR=/usr/local/hive/conf
export HIVE_AUX_JARS_PATH=/usr/local/hive/lib
6、初始化mysql
對(duì)MySQL數(shù)據(jù)庫(kù)進(jìn)行初始化
進(jìn)入mysql數(shù)據(jù)庫(kù),創(chuàng)建hive用戶和hive數(shù)據(jù)庫(kù)
CREATE USER 'hive'@'localhost' IDENTIFIED BY "hive";
grant all privileges on . to hive@localhost identified by 'hive';
create database hive;
刷新數(shù)據(jù)庫(kù)
flush privileges;
退出
exit;
測(cè)試hive用戶是否創(chuàng)建成功
mysql -uhive -p
Enter passwd: hive
進(jìn)入到hive的bin目錄 執(zhí)行命令:
cd /usr/local/hive/bin
對(duì)數(shù)據(jù)庫(kù)進(jìn)行初始化,執(zhí)行命令:
schematool -initSchema -dbType mysql
執(zhí)行成功后,hive數(shù)據(jù)庫(kù)里已經(jīng)有一堆表創(chuàng)建好了
7、測(cè)試hive
啟動(dòng)hive并測(cè)試
進(jìn)入到hive的bin目錄執(zhí)行命令:
cd /usr/local/hive/bin
執(zhí)行hive腳本進(jìn)行啟動(dòng),執(zhí)行命令:
./hive
執(zhí)行查看sum函數(shù)的詳細(xì)信息的命令:
desc function sum;
執(zhí)行新建數(shù)據(jù)庫(kù)的hive命令:
create database db_hive;
在剛才創(chuàng)建的數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)表,執(zhí)行hive命令:
use db_hive;
create table student(id int,name string) row format delimited fields terminated by '\t';
將文件數(shù)據(jù)寫(xiě)入表中
在/usr/local/hive目錄內(nèi)新建一個(gè)文件
執(zhí)行Linux命令(最好是重新打開(kāi)一個(gè)終端來(lái)執(zhí)行):
touch /opt/hive/student.txt
說(shuō)明:ID和name直接是TAB鍵,不是空格,因?yàn)樵谏厦鎰?chuàng)建表的語(yǔ)句中用了terminated by '\t'所以這個(gè)文本里id和name的分割必須是用TAB鍵(復(fù)制粘貼如果有問(wèn)題,手動(dòng)敲TAB鍵吧),還有就是行與行之間不能有空行,否則下面執(zhí)行l(wèi)oad,會(huì)把NULL存入表內(nèi),該文件要使用unix格式,如果是在windows上用txt文本編輯器編輯后在上載到服務(wù)器上,需要用工具將windows格式轉(zhuǎn)為unix格式,例如可以使用Notepad++來(lái)轉(zhuǎn)換。
完成上面的步驟后,在磁盤(pán)上/opt/hive/student.txt文件已經(jīng)創(chuàng)建成功,文件中也已經(jīng)有了內(nèi)容,在hive命令行中執(zhí)行加載數(shù)據(jù)的hive命令:
load data local inpath '/usr/local/hive/std.txt' into table db_hive.std;
執(zhí)行命令,查看是否把剛才文件中的數(shù)據(jù)寫(xiě)入成功
查看頁(yè)面
http://172.18.74.105:50070/explorer.html#/user/hive/warehouse/db_hive.db/student
點(diǎn)擊std.txt
在MySQL數(shù)據(jù)庫(kù)中執(zhí)行select語(yǔ)句,查看hive創(chuàng)建的表
select * from hive.TBLS;
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。