Hive安装及常用交互命令
Hive基本概念及常用交互命令
目錄
Hive安裝地址
Hive安裝部署
將本地文件導入Hive案例
MySQL安裝
Hive元數據配置到MySQL
Hive常用交互命令
Hive其他命令操作
Hive常見屬性配置
1. Hive安裝地址
Hive官網地址
http://hive.apache.org/
文檔查看地址
https://cwiki.apache.org/confluence/display/Hive/GettingStarted
下載地址
http://archive.apache.org/dist/hive/
github地址
https://github.com/apache/hive
2. Hive安裝部署
(1)把apache-hive-1.2.1-bin.tar.gz上傳到linux的/opt/software目錄下
(2)解壓apache-hive-1.2.1-bin.tar.gz到/opt/module/目錄下面
[centos@hadoop102 software]$ tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt/module/
(3)修改apache-hive-1.2.1-bin.tar.gz的名稱為hive
[centos@hadoop102 module]$ mv apache-hive-1.2.1-bin/ hive
(4)修改/opt/module/hive/conf目錄下的hive-env.sh.template名稱為hive-env.sh
[atguigu@hadoop102 conf]$ mv hive-env.sh.template hive-env.sh
(5)配置hive-env.sh文件
(a)配置HADOOP_HOME路徑
export HADOOP_HOME=/opt/module/hadoop-2.7.2
(b)配置HIVE_CONF_DIR路徑
export HIVE_CONF_DIR=/opt/module/hive/conf
(1)必須啟動hdfs和yarn
[centos@hadoop102 hadoop-2.7.2]$ sbin/start-dfs.sh
[centos@hadoop103 hadoop-2.7.2]$ sbin/start-yarn.sh
(2)在HDFS上創建/tmp和/user/hive/warehouse兩個目錄并修改他們的同組權限可寫
[centos@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -mkdir /tmp
[centos@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -mkdir -p /user/hive/warehouse
[centos@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -chmod g+w /tmp
[centos@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -chmod g+w /user/hive/warehouse
或者在配置文件中關閉權限檢查 在hadoop 的hdfs-site.xml 中
(1)啟動hive
[centos@hadoop102 hive]$ bin/hive
(2)查看數據庫
hive> show databases;
(3)打開默認數據庫
hive> use default;
(4)顯示default數據庫中的表
hive> show tables;
(5)創建一張表
hive> create table student(id int, name string);
(6)顯示數據庫中有幾張表
hive> show tables;
(7)查看表的結構
hive> desc student;
(8)向表中插入數據
hive> insert into student values(1000,“ss”);
(9)查詢表中數據
hive> select * from student;
(10)退出hive
hive> quit;
3. 將本地文件導入Hive案例
需求
將本地/opt/module/datas/student.txt這個目錄下的數據導入到hive的student(id int, name string)表中。
在/opt/module/datas這個目錄下準備數據
(1)在/opt/module/目錄下創建datas
[centos@hadoop102 module]$ mkdir datas
(2)在/opt/module/datas/目錄下創建student.txt文件并添加數據
[centos@hadoop102 datas]$ touch student.txt
[centos@hadoop102 datas]$ vi student.txt
注意以tab鍵間隔。
(1)啟動hive
[centos@hadoop102 hive]$ bin/hive
(2)顯示數據庫
hive> show databases;
(3)使用default數據庫
hive> use default;
(4)顯示default數據庫中的表
hive> show tables;
(5)刪除已創建的student表
hive> drop table student;
(6)創建student表, 并聲明文件分隔符’\t’
hive> create table student(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED
BY ‘\t’;
(7)加載/opt/module/datas/student.txt 文件到student數據庫表中。 雙引號也可以
hive> load data local inpath ‘/opt/module/datas/student.txt’ into table student;
(8)Hive查詢結果
hive> select * from student;
OK
1001 zhangshan
1002 lishi
1003 zhaoliu
Time taken: 0.266 seconds, Fetched: 3 row(s)
3.遇到的問題
再打開一個客戶端窗口啟動hive,會產生java.sql.SQLException異常。
原因是,Metastore默認存儲在自帶的derby數據庫中,推薦使用MySQL存儲Metastore;
4. MySQL安裝
1. 安裝包準備
(1)查看
[root@hadoop102 桌面]# rpm -qa|grep mysql
mysql-libs-5.1.73-7.el6.x86_64
(2)卸載
[root@hadoop102 桌面]# rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64
[root@hadoop102 software]# unzip mysql-libs.zip
[root@hadoop102 software]# ls
mysql-libs.zip
mysql-libs
[root@hadoop102 mysql-libs]# ll
總用量 76048
-rw-r–r--. 1 root root 18509960 3月 26 2015 MySQL-client-5.6.24-1.el6.x86_64.rpm
-rw-r–r--. 1 root root 3575135 12月 1 2013 mysql-connector-java-5.1.27.tar.gz
-rw-r–r--. 1 root root 55782196 3月 26 2015 MySQL-server-5.6.24-1.el6.x86_64.rpm
2. 安裝MySql服務器
[root@hadoop102 mysql-libs]# rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm
[root@hadoop102 mysql-libs]# cat /root/.mysql_secret
OEXaQuS8IWkG19Xs
[root@hadoop102 mysql-libs]# service mysql status
[root@hadoop102 mysql-libs]# service mysql start
3. 安裝MySql客戶端
[root@hadoop102 mysql-libs]# rpm -ivh MySQL-client-5.6.24-1.el6.x86_64.rpm
[root@hadoop102 mysql-libs]# mysql -uroot -pOEXaQuS8IWkG19Xs
mysql>SET PASSWORD=PASSWORD(‘000000’);
mysql>exit
4. MySql中user表中主機配置
配置只要是root用戶+密碼,在任何主機上都能登錄MySQL數據庫。
[root@hadoop102 mysql-libs]# mysql -uroot -p000000
mysql>show databases;
mysql>use mysql;
mysql>show tables;
mysql>desc user;
mysql>select User, Host, Password from user;
mysql>update user set host=’%’ where host=‘localhost’;
mysql>delete from user where Host=‘hadoop102’;
mysql>delete from user where Host=‘127.0.0.1’;
mysql>delete from user where Host=’::1’;
mysql>flush privileges;
mysql>quit;
5. Hive元數據配置到MySQL
1. 驅動拷貝
[root@hadoop102 mysql-libs]# tar -zxvf mysql-connector-java-5.1.27.tar.gz
[root@hadoop102 mysql-connector-java-5.1.27]# cp mysql-connector-java-5.1.27-bin.jar
/opt/module/hive/lib/
2. 配置Metastore到MySql
[atguigu@hadoop102 conf]$ touch hive-site.xml
[atguigu@hadoop102 conf]$ vi hive-site.xml
2.根據官方文檔配置參數,拷貝數據到hive-site.xml文件中
https://cwiki.apache.org/confluence/display/Hive/AdminManual+MetastoreAdmin
3. 多窗口啟動Hive測試
[centos@hadoop102 mysql-libs]$ mysql -uroot -p000000
查看有幾個數據庫
mysql> show databases;
±-------------------+
| Database |
±-------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
±-------------------+
[centos@hadoop102 hive]$ bin/hive
mysql> show databases;
±-------------------+
| Database |
±-------------------+
| information_schema |
| metastore |
| mysql |
| performance_schema |
| test |
±-------------------+
6. Hive常用交互命令
[centos@hadoop102 hive]$ bin/hive -help
usage: hive-d,--define <key=value> Variable subsitution to apply to hivecommands. e.g. -d A=B or --define A=B--database <databasename> Specify the database to use-e <quoted-query-string> SQL from command line-f <filename> SQL from files-H,--help Print help information--hiveconf <property=value> Use value for given property--hivevar <key=value> Variable subsitution to apply to hivecommands. e.g. --hivevar A=B-i <filename> Initialization SQL file-S,--silent Silent mode in interactive shell-v,--verbose Verbose mode (echo executed SQL to the console)[centos@hadoop102 hive]$ bin/hive -e “select id from student;”
(1)在/opt/module/datas目錄下創建hivef.sql文件
[centos@hadoop102 datas]$ touch hivef.sql
文件中寫入正確的sql語句
select *from student;
(2)執行文件中的sql語句
[centos@hadoop102 hive]$ bin/hive -f /opt/module/datas/hivef.sql
(3)執行文件中的sql語句并將結果寫入文件中
[centos@hadoop102 hive]$ bin/hive -f /opt/module/datas/hivef.sql > /opt/module/datas/hive_result.txt
7. Hive其他命令操作
hive(default)>exit;
hive(default)>quit;
在新版的hive中沒區別了,在以前的版本是有的:
exit:先隱性提交數據,再退出;
quit:不提交數據,退出;
hive(default)>dfs -ls /;
hive(default)>! ls /opt/module/datas;
(1)進入到當前用戶的根目錄/root或/home/centos
(2)查看. hivehistory文件
[centos@hadoop102 ~]$ cat .hivehistory
8. Hive常見屬性配置
1. Hive數據倉庫位置配置
1)Default數據倉庫的最原始位置是在hdfs上的:/user/hive/warehouse路徑下。
2)在倉庫目錄下,沒有對默認的數據庫default創建文件夾。如果某張表屬于default數據庫,直接在數據倉庫目錄下創建一個文件夾。
3)修改default數據倉庫原始位置(將hive-default.xml.template如下配置信息拷貝到hive-site.xml文件中)。
配置同組用戶有執行權限
bin/hdfs dfs -chmod g+w /user/hive/warehouse
2. 查詢后信息顯示配置
1)在hive-site.xml文件中添加如下配置信息,就可以實現顯示當前數據庫,以及查詢表的頭信息配置。
<property><name>hive.cli.print.header</name><value>true</value> </property><property><name>hive.cli.print.current.db</name><value>true</value> </property>2)重新啟動hive,對比配置前后差異。
3. Hive運行日志信息配置
(1)修改/opt/module/hive/conf/hive-log4j.properties.template文件名稱為
hive-log4j.properties
[atguigu@hadoop102 conf]$ pwd
/opt/module/hive/conf
[atguigu@hadoop102 conf]$ mv hive-log4j.properties.template hive-log4j.properties
(2)在hive-log4j.properties文件中修改log存放位置
hive.log.dir=/opt/module/hive/logs
4. 參數配置方式
1.查看當前所有的配置信息
hive>set;
2.參數的配置三種方式
(1)配置文件方式
默認配置文件:hive-default.xml
用戶自定義配置文件:hive-site.xml
注意:用戶自定義配置會覆蓋默認配置。另外,Hive也會讀入Hadoop的配置,因為Hive是作為Hadoop的客戶端啟動的,Hive的配置會覆蓋Hadoop的配置。配置文件的設定對本機啟動的所有Hive進程都有效。
(2)命令行參數方式
啟動Hive時,可以在命令行添加-hiveconf param=value來設定參數。
例如:
[centos@hadoop103 hive]$ bin/hive -hiveconf mapred.reduce.tasks=10;
注意:僅對本次hive啟動有效
查看參數設置:
hive (default)> set mapred.reduce.tasks;
(3)參數聲明方式
可以在HQL中使用SET關鍵字設定參數
例如:
hive (default)> set mapred.reduce.tasks=100;
注意:僅對本次hive啟動有效。
查看參數設置
hive (default)> set mapred.reduce.tasks;
上述三種設定方式的優先級依次遞增。即配置文件<命令行參數<參數聲明。注意某些系統級的參數,例如log4j相關的設定,必須用前兩種方式設定,因為那些參數的讀取在會話建立以前已經完成了。
總結
以上是生活随笔為你收集整理的Hive安装及常用交互命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hive基本概念
- 下一篇: Hive之DDL数据定义