Hive基本使用


Hive系列第三章


第三章 基本使用

1、 创建库:create database mydb; 
2、 查看库:show databases; 
3、 切换数据库:use mydb; 

3.1 访问Hive的方式

3.1.1 直接可以在客户端Hive进入

见2.5.8 启动hive客户端

3.1.2 使用JDBC方式

Hive基本使用_第1张图片

先知道:beeline相当于客户端,hiveserver2相当于服务端

这个需要配置一些东西

1、在hive-site.xml配置文件中添加如下信息:


<property>
	<name>hive.server2.thrift.bind.hostname>
	<value>hadoop10value>
property>

<property>
	<name>hive.server2.thrift.portname>
	<value>10000value>
property>

2、启动hiveserver2

[root@hadoop10 bin]# pwd
/software/hive/bin
[root@hadoop10 bin]# hive --service hiveserver2

3、启动beeline客户端

[root@hadoop10 bin]# pwd
/software/hive/bin
[root@hadoop10 bin]# hive --service hiveserver2
[root@hadoop10 bin]# beeline -u jdbc:hive2://hadoop10:10000 -n root

3.2 一些基本的使用

[root@hadoop10 hive]# bin/hive -help
which: no hbase in (.:.:.:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/software/jdk/bin:/software/zk/bin:/software/hadoop/bin:/software/hadoop/sbin:/software/hive/bin:/root/bin)
Hive Session ID = 81616d71-9fbb-4c8a-a86d-3f652bc95fee
usage: hive
 -d,--define           Variable substitution to apply to Hive
                                  commands. e.g. -d A=B or --define A=B
    --database      Specify the database to use
 -e          SQL from command line
 -f                     SQL from files
 -H,--help                        Print help information
    --hiveconf    Use value for given property
    --hivevar          Variable substitution to apply to Hive
                                  commands. e.g. --hivevar A=B
 -i                     Initialization SQL file
 -S,--silent                      Silent mode in interactive shell
 -v,--verbose                     Verbose mode (echo executed SQL to the
                                  console)

3.2.1 不进入Hive的交互窗口中执行语句

[root@hadoop10 bin]# hive -e "show databases;"
Hive Session ID = 933775ac-6ba5-4a67-90b3-22b356462f96

Logging initialized using configuration in jar:file:/software/hive/lib/hive-common-3.1.2.jar!/hive-log4j2.properties Async: true
Hive Session ID = 9c49687c-79c9-413d-862f-21ca5b5690a0
OK
default
mydb
Time taken: 1.928 seconds, Fetched: 2 row(s)
[root@hadoop10 bin]# 

3.2.2 执行某个文件中的sql语句

1、在mydb库下面创建一个表student

hive> use mydb;
OK
Time taken: 0.399 seconds
hive> show tables;
OK
Time taken: 0.092 seconds
hive> create table student(id int, name string, sex string, age int, department string) row format delimited fields terminated by ",";
OK
Time taken: 1.088 seconds
hive> show tables;
OK
student
Time taken: 0.033 seconds, Fetched: 1 row(s)
hive> select * from student;
OK
Time taken: 1.106 seconds
hive> load data local inpath "/home/data/student.txt" into table student;
Loading data to table mydb.student
OK
Time taken: 0.835 seconds
hive> select * from student;
OK
95002	李一	女	19	IS
95017	李二	女	18	IS
95018	李三	女	19	IS
95013	李四	男	21	CS
95014	李五	女	19	CS
95019	李六	女	19	IS
95020	李七	男	21	IS
95003	李八	女	22	MA
95004	李九	男	19	IS
95012	李十	女	20	CS
95010	王一	男	19	CS
95005	王二	男	18	MA
95006	王三	男	23	CS
95007	王四	女	19	MA
95008	王五	女	18	CS
95021	王六	男	17	MA
95022	王七	男	20	MA
95001	王九	男	20	CS
95011	张三	男	18	MA
95009	张四	女	18	MA
95015	张五	男	18	MA
Time taken: 0.118 seconds, Fetched: 21 row(s)
hive> 

2、在/home/data下面建一个存放sql语句的文件,并写入正确的语句

[root@hadoop10 data]# pwd
/home/data
[root@hadoop10 data]# vim file.sql
[root@hadoop10 data]# cat file.sql 
select * from mydb.student;
[root@hadoop10 data]# 

3、执行自己编写的file.sql文件

[root@hadoop10 data]# hive -f /home/data/file.sql 
which: no hbase in (.:.:.:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/software/jdk/bin:/software/zk/bin:/software/hadoop/bin:/software/hadoop/sbin:/software/hive/bin:/root/bin)
Hive Session ID = d3542b41-d012-4c53-ba3d-2c68ec119020

Logging initialized using configuration in jar:file:/software/hive/lib/hive-common-3.1.2.jar!/hive-log4j2.properties Async: true
Hive Session ID = 64154679-2a91-4383-93ba-40d427d9b87e
OK
95002	李一	女	19	IS
95017	李二	女	18	IS
95018	李三	女	19	IS
95013	李四	男	21	CS
95014	李五	女	19	CS
95019	李六	女	19	IS
95020	李七	男	21	IS
95003	李八	女	22	MA
95004	李九	男	19	IS
95012	李十	女	20	CS
95010	王一	男	19	CS
95005	王二	男	18	MA
95006	王三	男	23	CS
95007	王四	女	19	MA
95008	王五	女	18	CS
95021	王六	男	17	MA
95022	王七	男	20	MA
95001	王九	男	20	CS
95011	张三	男	18	MA
95009	张四	女	18	MA
95015	张五	男	18	MA
Time taken: 2.502 seconds, Fetched: 21 row(s)
[root@hadoop10 data]# 

4、给结果数据输出到特定的文件中

[root@hadoop10 data]# hive -f /home/data/file.sql > /home/data/file_result.txt
which: no hbase in (.:.:.:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/software/jdk/bin:/software/zk/bin:/software/hadoop/bin:/software/hadoop/sbin:/software/hive/bin:/root/bin)
Hive Session ID = 4bc46897-0bad-4866-89ee-521c6ef950af

Logging initialized using configuration in jar:file:/software/hive/lib/hive-common-3.1.2.jar!/hive-log4j2.properties Async: true
Hive Session ID = c2b7a70c-4523-4130-8a97-443a86e272d7
OK
Time taken: 2.054 seconds, Fetched: 21 row(s)
[root@hadoop10 data]# cat file_result.txt 
95002	李一	女	19	IS
95017	李二	女	18	IS
95018	李三	女	19	IS
95013	李四	男	21	CS
95014	李五	女	19	CS
95019	李六	女	19	IS
95020	李七	男	21	IS
95003	李八	女	22	MA
95004	李九	男	19	IS
95012	李十	女	20	CS
95010	王一	男	19	CS
95005	王二	男	18	MA
95006	王三	男	23	CS
95007	王四	女	19	MA
95008	王五	女	18	CS
95021	王六	男	17	MA
95022	王七	男	20	MA
95001	王九	男	20	CS
95011	张三	男	18	MA
95009	张四	女	18	MA
95015	张五	男	18	MA
[root@hadoop10 data]# 

3.2.3 在Hive的交互窗口中查看hdfs的文件系统

主要要有分号

hive> dfs -ls /;
Found 13 items
drwxrwxrwx   - root supergroup          0 2021-09-09 17:41 /aa
drwxrwxrwx   - root supergroup          0 2021-09-09 20:05 /bb
drwxr-xr-x   - root supergroup          0 2021-09-06 23:28 /test
-rw-r--r--   2 root supergroup   30881207 2021-09-06 23:33 /test_big.txt
drwx-wx-wx   - root supergroup          0 2021-09-22 19:13 /tmp
drwxr-xr-x   - root supergroup          0 2021-09-21 18:58 /user
drwxr-xr-x   - root supergroup          0 2021-09-06 23:06 /wc
drwxr-xr-x   - root supergroup          0 2021-09-02 22:29 /wcinput
drwxr-xr-x   - root supergroup          0 2021-09-22 19:19 /wcout
drwxr-xr-x   - root supergroup          0 2021-09-02 22:32 /wcoutput
-rw-r--r--   1 root supergroup         37 2021-09-09 16:56 /wordcount.txt
drwxr-xr-x   - root supergroup          0 2021-09-13 22:28 /wordout0913
drwxr-xr-x   - root supergroup          0 2021-09-13 22:33 /wordout0913_2
hive> 

3.2.4 查看在Hive中输入的历史语句命令

在用户的家目录里面,要是用root用户就在/root目录下,要是用其他的用户,就在/home/用户名目录下。

通过ls -al 查看所有文件,包含隐藏文件

通过cat .hivehistory 查看历史执行过的命令

[root@hadoop10 ~]# ls -al
total 84
dr-xr-x---. 17 root root  4096 Sep 24 15:40 .
dr-xr-xr-x. 18 root root   240 Aug 29 20:07 ..
-rw-------.  1 root root  4721 Aug 30 02:57 anaconda-ks.cfg
-rw-------.  1 root root 14042 Sep 22 22:01 .bash_history
-rw-r--r--.  1 root root    18 Dec 29  2013 .bash_logout
-rw-r--r--.  1 root root   176 Dec 29  2013 .bash_profile
-rw-r--r--.  1 root root   176 Dec 29  2013 .bashrc
drwxr-xr-x.  2 root root    21 Sep 21 18:43 .beeline
drwx------. 14 root root  4096 Aug 29 19:18 .cache
drwxr-xr-x. 14 root root   261 Aug 30 02:59 .config
-rw-r--r--.  1 root root   100 Dec 29  2013 .cshrc
drwx------.  3 root root    25 Aug 30 02:59 .dbus
drwxr-xr-x.  2 root root     6 Aug 30 02:59 Desktop
drwxr-xr-x.  2 root root     6 Aug 30 02:59 Documents
drwxr-xr-x.  2 root root     6 Aug 30 02:59 Downloads
-rw-------.  1 root root    16 Aug 30 02:59 .esd_auth
-rw-r--r--.  1 root root    60 Sep 24 15:27 .hivehistory
-rw-------.  1 root root   624 Sep  6 20:24 .ICEauthority
drwx------.  3 root root    19 Aug 30 02:59 .local
drwx------.  5 root root    66 Aug 29 19:02 .mozilla
drwxr-xr-x.  2 root root     6 Aug 30 02:59 Music
-rw-------.  1 root root    83 Sep 21 18:43 .mysql_history
-rw-------.  1 root root  3699 Aug 30 02:57 original-ks.cfg
drwxr-xr-x.  2 root root     6 Aug 30 02:59 Pictures
drwxr-xr-x.  2 root root     6 Aug 30 02:59 Public
drwx------.  2 root root    80 Aug 29 19:57 .ssh
-rw-r--r--.  1 root root   129 Dec 29  2013 .tcshrc
drwxr-xr-x.  2 root root     6 Aug 30 02:59 Templates
drwxr-xr-x.  2 root root     6 Aug 30 02:59 Videos
-rw-------.  1 root root  6108 Sep 24 15:40 .viminfo
-rw-------.  1 root root   229 Sep 24 15:35 .Xauthority
[root@hadoop10 ~]# cat .hivehistory 
show databases;
create database mydb;
show databases;
quit;
[root@hadoop10 ~]# 

3.3 一些基本的配置

3.3.1 日志位置

默认位置:/tmp/root/hive.log文件中

[root@hadoop10 root]# ll
total 156
drwx------. 2 root root      6 Sep 24 15:37 21f5331b-82cd-4d0a-be3b-3b3fc0d62180
-rw-r--r--. 1 root root      0 Sep 24 15:34 21f5331b-82cd-4d0a-be3b-3b3fc0d621806356445313698981042.pipeout
-rw-r--r--. 1 root root      0 Sep 24 15:34 21f5331b-82cd-4d0a-be3b-3b3fc0d621807985755165757000647.pipeout
drwx------. 2 root root      6 Sep 24 15:34 66a87d5b-e275-4b26-a50d-7bd7efa85a2d
-rw-r--r--. 1 root root      0 Sep 24 15:34 66a87d5b-e275-4b26-a50d-7bd7efa85a2d1344584666254365059.pipeout
-rw-r--r--. 1 root root      0 Sep 24 15:34 66a87d5b-e275-4b26-a50d-7bd7efa85a2d1624881081861789479.pipeout
-rw-r--r--. 1 root root 132489 Sep 24 15:44 hive.log
-rw-r--r--. 1 root root  23509 Sep 21 19:08 hive.log.2021-09-21
[root@hadoop10 root]# pwd
/tmp/root
[root@hadoop10 root]# cat hive.log

若想修改位置,可以按照下面的步骤操作:

1、重命名 hive-log4j2.properties.template 为  hive-log4j2.properties
2、在 hive-log4j2.properties 文件中修改 log 存放位置就可以啦
hive.log.dir=/home/data/logs  (就是你想存放的日志结果的位置)

3.3.2 打印结果的时候带上所属库和所属表

在 hive-site.xml 中加入如下配置即可


	hive.cli.print.header
	true


	hive.cli.print.current.db
	true

测试结果如下:

hive (mydb)> select * from student;
OK
student.id	student.name	student.sex	student.age	student.department
95002	李一	女	19	IS
95017	李二	女	18	IS
95018	李三	女	19	IS
95013	李四	男	21	CS
95014	李五	女	19	CS
95019	李六	女	19	IS
95020	李七	男	21	IS
95003	李八	女	22	MA
95004	李九	男	19	IS
95012	李十	女	20	CS
95010	王一	男	19	CS
95005	王二	男	18	MA
95006	王三	男	23	CS
95007	王四	女	19	MA
95008	王五	女	18	CS
95021	王六	男	17	MA
95022	王七	男	20	MA
95001	王九	男	20	CS
95011	张三	男	18	MA
95009	张四	女	18	MA
95015	张五	男	18	MA
Time taken: 0.131 seconds, Fetched: 21 row(s)
hive (mydb)> 



声明:
        文章中代码及相关语句为自己根据相应理解编写,文章中出现的相关图片为自己实践中的截图和相关技术对应的图片,若有相关异议,请联系删除。感谢。转载请注明出处,感谢。


By luoyepiaoxue2014

微博地址: http://weibo.com/luoyepiaoxue2014 点击打开链接

你可能感兴趣的:(Hive,Hive,大数据)