Hive初識二
繼上篇文章寫完對hive的一些基本認識之後,本篇文章對hive的安裝以及一些的使用做一個簡單的介紹~
一、hive的安裝
要想在一臺linux伺服器上安裝hive,首先要具備以下三個條件
(1)JDK
(2)HADOOP
(3)MYSQL
在這裡,我預設各路大神已經安裝完了JDK,以及hadoop,直接介紹mysql的安裝(後期也會寫一篇安裝Hadoop的叢集版和單機版)。
1。安裝mysql(離線方式)
(1)下載mysql的安裝包,我這裡下載的是5。1。73版本
(2)查詢linux中已有的mysql依賴包
rpm -qa | grep mysql
(3)刪除linux中已有的mysql依賴包
rpm -e ——nodeps `rpm -qa | grep mysql`
(4)安裝服務端和客戶端
服務端:rpm -ivh MySQL-server-5。1。73-1。glibc23。x86_64。rpm
客戶端:rpm -ivh MySQL-client-5。1。73-1。glibc23。x86_64。rpm
(5)啟動mysql server服務
service mysql start(注意:離線安裝後mysql的服務名稱為mysql,線上安裝後的服務名稱為msyqld)
(6)將mysql服務加入到開機啟動項
chkconfig mysql on
(7)進行使用者名稱密碼設定
mysql_secure_installation
(8)對遠端可訪問的機器進行授權
在mysql伺服器登入:mysql -uroot -proot (-u mysql的使用者名稱,-p mysql的密碼)
(9)然後執行以下sql語句:
grant all privileges on *。* to ‘root’@‘%’ identified by ‘root’;
flush privileges;
至此,mysql的離線安裝已經完成(既然有離線安裝,那麼必然有線上安裝方式,此處我就不進行過多介紹了)
2。安裝Hive
我這裡用的hive版本是2。1。0
(1)解壓Hive檔案
tar -zxvf apache-hive-2。1。0-bin。tar。gz -C /opt/soft/hive
然後進入$HIVE_HOME/conf/修改檔案(將以下兩個檔案複製一份,防止以後丟失):
cp hive-env。sh。template hive-env。sh
cp hive-default。xml。template hive-site。xml
(2)修改$HIVE_HOME/bin的hive-env。sh,增加以下三行
export JAVA_HOME=/opt/jdk (指定java的安裝目錄)
export HADOOP_HOME=/opt/hadoop (指定hadoop的安裝目錄)
export HIVE_HOME=/opt/hive (指定hive的安裝目錄)
(3)修改$HIVE_HOME/conf/hive-site。xml
(4)初始化hive元資料倉庫
進入到執行目錄$HIVE_HOME/bin
。/schematool -initSchema -dbType mysql -userName root -passWord root
(5)啟動hive
①。/hive (客戶端啟動)
②$HIVE_HOME/bin/hive ——service hiveserver2 (啟動hiveserver2,使其他服務可以透過thrift接入hive,但此處需要配置hadoop以及在hive-site。xml增加配置,具體請移步
https://
blog。csdn。net/lblblblbl
zdx/article/details/79760959
)
③使用遠端的metastore (metastore可以和hive客戶端不在一個機器上,具體見上面連結)
至此hive的安裝已經全部完成啦~下面就盡情的使用吧~
二、 hive的基本使用
(1)建立資料庫,及使用資料庫
create database hivedemo;
use hivedemo;
(2)顯示當前正在使用的資料庫,及顯示資料庫列表
set hive。cli。print。current。db=true;
show databases;
(3)刪除資料庫
drop database hivedemo;
(4) 關於資料庫的基本操作
在hive中,除了string和複合型別(array、map、struct)之外,基本和mysql一致。
①建立表:
create table 表名(
欄位名 欄位型別 註解comment, 。。。 ,
欄位名 欄位型別 註解comment
) comment “”;
例如。
create table t1(
id int,
name string comment “this is t1‘s column name”
) comment “TABLE t1”;
②向表中增加一列
alter table1 add columns(age int);
③刪除表和表中的資料
drop table table1 ;
truncate table table_name;
按照分割槽刪除資料:alter table table_name drop partition (partition_name=’分割槽名‘)
④hive hql的執行方式
hive客戶端:hive> source /opt/data/hive/hive-t1。hql;
linux終端:
執行sql指令碼:/opt/hive/bin/hive -f hive-t1-1。hql
執行sql語句:/opt/hive/bin/hive -e “set hive。exec。mode。local。auto=true;select * from test;”
也可以寫成以下方式:
/opt/hive/bin/hive -f hive-t1-1。hql ——hiveconf hive。exec。mode。local。auto=true
/opt/hive/bin/hive -e “select * from test;” ——hiveconf hive。exec。mode。local。auto=true
⑤向hive中匯入資料的方式
伺服器本地檔案:load data local inpath ’/opt/data/hive/hive-t1-1。txt‘ into table t1;
hdfs上檔案:hdfs dfs -put /opt/data/hive/hive-t1-1。txt /user/hive/warehouse/t1/
我們在匯入資料的時候會發現,資料並沒有匯入成功,那是因為資料來源是我們自定義的資料,行和列的有關的分隔符,並沒有告訴hive如何去解析,或者我們可以這樣理解,我們自己定義的資料來源中的分隔符和hive表預設的分隔符並不一致。
那麼hive預設的分隔符是什麼呢?是什麼呢?
在hive中 行之間的預設分隔符是\n,預設的列分隔符是\001(這個太噁心了),這個我們在鍵盤上可以直接用ctrl+v ctrl+a的組合鍵來直接打出\001這個噁心的符號。
⑥資料進入hive的載入模式(分別是讀模式和寫模式)
讀模式:
將資料載入到表中的時候,對資料的合法性不進行校驗,只有在操作表的時候,才會去對資料的合法性進行一個校 驗,不合法的資料會被顯示為NULL。
寫模式:
在資料載入到表中時,需要對資料的合法性進行一個校驗,只有合法的資料,才會被載入到資料庫中。
這種預設比較適合事務性資料庫載入資料,常見的資料庫入mysql、oracle都是採用的這種模式。
⑦自定義分隔符
create table t2 (
id int,
name string,