9.Hive运行方式
- 命令行方式cli:控制台模式 (了解)
- 脚本运行方式(实际生产环境中用最多) 重点
9.1 命令行方式cli
**与hdfs交互:**执行dfs命令
hive> dfs -ls /;
Found 7 items
drwxr-xr-x - root supergroup 0 2021-
11-05 17:44 /fof
drwxr-xr-x - root supergroup 0 2021-
11-18 11:28 /opt
drwx------ - root supergroup 0 2021-
11-08 21:35 /tmp
drwxr-xr-x - root supergroup 0 2021-
11-08 23:17 /user
drwxr-xr-x - root supergroup 0 2021-
11-19 10:20 /usr
drwxr-xr-x - root supergroup 0 2021-
11-04 13:25 /weather
drwxr-xr-x - root supergroup 0 2021-
10-29 03:49 /wordcount
hive> dfs -cat /user/hive_remote/warehouse/person2/000000_0;
1,小明1,lol-book-movie,beijing:xisanqishanghai:pudong
2,小明2,lol-book-movie,beijing:xisanqishanghai:pudong
3,小明3,lol-book-movie,beijing:xisanqishanghai:pudong
4,小明4,lol-book-movie,beijing:xisanqishanghai:pudong
5,小明5,lol-movie,beijing:xisanqishanghai:pudong
6,小明6,lol-book-movie,beijing:xisanqishanghai:pudong
7,小明7,lol-book,beijing:xisanqi-shanghai:pudong
8,小明8,lol-book,beijing:xisanqi-shanghai:pudong
9,小明9,lol-book-movie,beijing:xisanqishanghai:pudong
与Linux交互:!开头
!pwd;
!ls /root;
9.2 脚本运行方式
[root@node4 ~]# hive --service cli --help
usage: hive
-d,--define <key=value> Variable
substitution to apply to Hive 定义变量
commands.
e.g. -d A=B or --define A=B
--database <databasename> Specify the
database to use
-e <quoted-query-string> SQL from
command line 执行后面跟着的sql语句
-f <filename> SQL from
files 执行指定文件中的sql语句
-H,--help Print help
information
--hiveconf <property=value> Use value for
given property
--hivevar <key=value> Variable
substitution to apply to Hive
commands.
e.g. --hivevar A=B
-i <filename>
Initialization SQL file 执行初始化的sql文件
-S,--silent Silent mode
in interactive shell 静默模式(不显示Ok和Time taken
信息)
-v,--verbose Verbose mode
(echo executed SQL to the
console)
演示
#hive -e sql
[root@node4 ~]# hive -e "select * from person"
Hive Session ID = dd3f4c02-3b67-4b3a-8194-
f781b39037a8
OK
person.id person.name person.likes
person.address
1 小明1 ["lol","book","movie"]
{
"beijing":"xisanqi","shanghai":"pudong"}
2 小明2 ["lol","book","movie"]
{
"beijing":"xisanqi","shanghai":"pudong"}
3 小明3 ["lol","book","movie"]
{
"beijing":"xisanqi","shanghai":"pudong"}
4 小明4 ["lol","book","movie"]
{
"beijing":"xisanqi","shanghai":"pudong"}
5 小明5 ["lol","movie"]
{
"beijing":"xisanqi","shanghai":"pudong"}
6 小明6 ["lol","book","movie"]
{
"beijing":"xisanqi","shanghai":"pudong"}
7 小明7 ["lol","book"]
{
"beijing":"xisanqi","shanghai":"pudong"}
8 小明8 ["lol","book"]
{
"beijing":"xisanqi","shanghai":"pudong"}
9 小明9 ["lol","book","movie"]
{
"beijing":"xisanqi","shanghai":"pudong"}
Time taken: 4.931 seconds, Fetched: 9 row(s)
#静默模式
[root@node4 ~]# hive -S -e "select * from
person"
person.id person.name person.likes
person.address
1 小明1 ["lol","book","movie"]
{"beijing":"xisanqi","shanghai":"pudong"}
2 小明2 ["lol","book","movie"]
{"beijing":"xisanqi","shanghai":"pudong"}
3 小明3 ["lol","book","movie"]
{"beijing":"xisanqi","shanghai":"pudong"}
4 小明4 ["lol","book","movie"]
{"beijing":"xisanqi","shanghai":"pudong"}
5 小明5 ["lol","movie"]
{"beijing":"xisanqi","shanghai":"pudong"}
6 小明6 ["lol","book","movie"]
{"beijing":"xisanqi","shanghai":"pudong"}
7 小明7 ["lol","book"]
{"beijing":"xisanqi","shanghai":"pudong"}
8 小明8 ["lol","book"]
{"beijing":"xisanqi","shanghai":"pudong"}
9 小明9 ["lol","book","movie"]
{"beijing":"xisanqi","shanghai":"pudong"}
#将查询结果写入到指定的文件中
[root@node4 ~]# hive -e "select * from person"
>he.log
......
Hive Session ID = 057aad48-7e02-408d-9e8eee92509a139a
OK
Time taken: 4.561 seconds, Fetched: 9 row(s)
[root@node4 ~]# cat he.log
person.id person.name person.likes
person.address
1 小明1 ["lol","book","movie"]
{"beijing":"xisanqi","shanghai":"pudong"}
2 小明2 ["lol","book","movie"]
{"beijing":"xisanqi","shanghai":"pudong"}
3 小明3 ["lol","book","movie"]
{"beijing":"xisanqi","shanghai":"pudong"}
4 小明4 ["lol","book","movie"]
{"beijing":"xisanqi","shanghai":"pudong"}
5 小明5 ["lol","movie"]
{"beijing":"xisanqi","shanghai":"pudong"}
6 小明6 ["lol","book","movie"]
{"beijing":"xisanqi","shanghai":"pudong"}
7 小明7 ["lol","book"]
{"beijing":"xisanqi","shanghai":"pudong"}
8 小明8 ["lol","book"]
{"beijing":"xisanqi","shanghai":"pudong"}
9 小明9 ["lol","book","movie"]
{"beijing":"xisanqi","shanghai":"pudong"}
hive脚本:./脚本名称
[root@node4 ~]# vim hive.sh
hive -e "select * from person"
[root@node4 ~]# chmod +x hive.sh
[root@node4 ~]# ./hive.sh
hive -f file:执行后还在linux命令行
[root@node4 ~]# vim hivef.sql
select * from person
[root@node4 ~]# hive -f hivef.sql
hive -i init.sql:执行后进入hive客户端
[root@node4 ~]# cat init.sql
select * from person
[root@node4 ~]# hive -i init.sql
Hive Session ID = 5ae4b56e-b0bf-458c-811dc60090b658b3
1 小明1 ["lol","book","movie"]
{
"beijing":"xisanqi","shanghai":"pudong"}
2 小明2 ["lol","book","movie"]
{
"beijing":"xisanqi","shanghai":"pudong"}
3 小明3 ["lol","book","movie"]
{
"beijing":"xisanqi","shanghai":"pudong"}
4 小明4 ["lol","book","movie"]
{
"beijing":"xisanqi","shanghai":"pudong"}
5 小明5 ["lol","movie"]
{
"beijing":"xisanqi","shanghai":"pudong"}
6 小明6 ["lol","book","movie"]
{
"beijing":"xisanqi","shanghai":"pudong"}
7 小明7 ["lol","book"]
{
"beijing":"xisanqi","shanghai":"pudong"}
8 小明8 ["lol","book"]
{
"beijing":"xisanqi","shanghai":"pudong"}
9 小明9 ["lol","book","movie"]
{
"beijing":"xisanqi","shanghai":"pudong"}
Hive-on-MR is deprecated in Hive 2 and may not
be available in the future versions. Consider
using a different execution engine (i.e. spark,
tez) or using Hive 1.X releases.
在hive cli中运行一个sql脚本:
hive> source hivef.sql;
OK
1 小明1 ["lol","book","movie"]
{
"beijing":"xisanqi","shanghai":"pudong"}
2 小明2 ["lol","book","movie"]
{
"beijing":"xisanqi","shanghai":"pudong"}
3 小明3 ["lol","book","movie"]
{
"beijing":"xisanqi","shanghai":"pudong"}
4 小明4 ["lol","book","movie"]
{
"beijing":"xisanqi","shanghai":"pudong"}
5 小明5 ["lol","movie"]
{
"beijing":"xisanqi","shanghai":"pudong"}
6 小明6 ["lol","book","movie"]
{
"beijing":"xisanqi","shanghai":"pudong"}
7 小明7 ["lol","book"]
{
"beijing":"xisanqi","shanghai":"pudong"}
8 小明8 ["lol","book"]
{
"beijing":"xisanqi","shanghai":"pudong"}
9 小明9 ["lol","book","movie"]
{
"beijing":"xisanqi","shanghai":"pudong"}
Time taken: 0.383 seconds, Fetched: 9 row(s)