Hive的安裝和使用
我的版本:
JAVA_HOME=/usr/local/soft/jdk1.8.0_171
HADOOP_HOME=/usr/local/soft/hadoop-2.7.6
HIVE_HOME=/usr/local/soft/hive-1.2.1
一、離線安裝mysql
hive的元數據需要存儲在mysql,沒安裝mysql的可以參考Linux安裝MySQL詳細步驟(CentOS6、CentOS7),安裝過的直接跳過
安裝hive前需要先在MySQL中創建hive元數據庫
create database hive character set "latin1";
二、安裝hive
1、解壓hive的安裝包:
tar -zxvf apache-hive-1.2.1-bin.tar.gz
我是安裝到/usr/local/soft目錄下
進入到自己的安裝目錄下修改目錄名稱(原來的名稱太長):
mv apache-hive-1.2.1-bin hive-1.2.1
2、進入hive-1.2.1/conf目錄,復制備份文件並重命名
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
3、配置hive的配置文件(hive的配置文件比較大,在linux中查找某項配置比較難,可以先將hive-site.xml文件復制到windows用文本編輯打開,然后ctrl+f查關鍵字修改,修改之后再放回到hive 的conf目錄)
3.1修改hive-env.sh
vim hive-env.sh
加入三行內容(大家根據自己的目錄和實際情況來添加)
HADOOP_HOME=/usr/local/soft/hadoop-2.7.6
JAVA_HOME=/usr/local/soft/jdk1.8.0_171
HIVE_HOME=/usr/local/soft/hive-1.2.1
3.2修改hive-site.xml
修改時要細心一點別找錯了
文件中涉及到的主機名和路徑要根據自己的修改
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hive?characterEncoding=utf-8</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<!-- 這里的用戶名和下面的密碼要根據自己的填寫 -->
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/usr/local/soft/hive-1.2.1/tmp</value>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/usr/local/soft/hive-1.2.1/tmp</value>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/usr/local/soft/hive-1.2.1/tmp</value>
</property>
3.4拷貝mysql驅動到$HIVE_HOME/lib目錄下
cd /usr/local/soft/hive-1.2.1/lib
進入到lib目錄
我的mysql驅動在/usr/local/soft/module/mysql-connector-java-5.1.49.jar
cp /usr/local/module/mysql-connector-java-5.1.49.jar ./
3.5將hive的jline-2.12.jar拷貝到hadoop對應目錄下,hive的 jline-2.12.jar 位置在 :
/usr/local/soft/hive-1.2.1/lib/
將hive的jar拷過去hadoop下(因為我的Hadoop版本里面不包含jline jar包直接拷過去即可,有的hadoop版本自帶jar包,這時候需要刪除版本低的,不然后面運行時會報錯):
cp /usr/local/soft/hive-1.2.1/lib/jline-2.12.jar /usr/local/soft/hadoop-2.7.6/share/hadoop/yarn/lib/
3.6配置環境變量,加上HIVE_HOME
修改/etc/profile
vim /etc/profile
export HIVE_HOME=/usr/local/soft/hive-1.2.1
export PATH=$PATH:$HIVE_HOME/bin
重新加載環境變量
source /etc/profile
3.7啟動hive:
hive
3.8 修改mysql元數據庫hive,讓其hive支持utf-8編碼以支持中文
登錄mysql(需要先退出hive或者再開一個會話窗口):
mysql -u root -p123456
切換到hive數據庫:
use hive;
1).修改字段注釋字符集
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
2).修改表注釋字符集
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
3).修改分區表參數,以支持分區鍵能夠用中文表示
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
4).修改索引注解(報錯不用管)
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
測試hive
1、啟動hive
2、在hive中創建test1數據庫
create database test1;
3、切換test1數據庫:
use test1;
4、創建students表:
create table students(
id bigint comment '學生id',
name string comment '學生姓名',
age int comment '學生年齡',
gender string comment '學生性別',
clazz string comment '學生班級'
) comment '學生信息表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
5、創建score表:
create table score(
id bigint comment '學生id',
score_id bigint comment '科目id',
score int comment '學生成績'
) comment '學生成績表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
6、查看表信息:
desc students;
desc score;