$HIVE_HOME/bin/hive是一个Shell工具,可以用来以交互式或批量模式运行HIve查询,本篇对其进行学习。
一 Hive环境
hive> select version();
OK
2.3.3 r8a511e3f79b43d4be41cd231cf5c99e43b248383
Time taken: 11.166 seconds, Fetched: 1 row(s)
二 HIve CLI介绍
1 CLI选项
1)查看帮助信息
[hadoop@strong ~]$ hive -H
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
-f <filename> SQL from files
-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
-S,--silent Silent mode in interactive shell
-v,--verbose Verbose mode (echo executed SQL to the console)
2)-d选项
该选项定义一个变量,以键值对形式进行定义,可直接在Hive命令行引用。
[hadoop@strong ~]$ hive -d tab=emp;
hive> select *from ${tab} limit 3;
OK
1 Alen
2 Jane
3 Tom
Time taken: 5.031 seconds, Fetched: 3 row(s)
注:以${}方式对变量进行引用。
3)--database选项
该选项表明要连接的数据库名称。
[hadoop@strong ~]$ hive --database hive
hive> select current_database() as db;
OK
hive
Time taken: 1.494 seconds, Fetched: 1 row(s)
4)-e选项
该选项表示在命令行执行一个SQL语句。
[hadoop@strong ~]$ hive -e "select *from hive.emp limit 3"
OK
1 Alen
2 Jane
3 Tom
Time taken: 14.263 seconds, Fetched: 3 row(s)
5)-f选项
该选项表示要执行一个文件。
[hadoop@strong ~]$ cat test.hql
use hive;
select *from emp limit 3;
[hadoop@strong ~]$ hive -f test.hql
OK
Time taken: 11.383 seconds
OK
1 Alen
2 Jane
3 Tom
Time taken: 4.126 seconds, Fetched: 3 row(s)
6)-S选项
该选项表示以静默方式执行。
[hadoop@strong ~]$ hive -S -e 'select *from hive.emp limit 3'
1 Alen
2 Jane
3 Tom
7)-V选项
该选项用于打印输出信息。
8)-H选项
该选项用于显示帮助信息。
9)--hiveconf选项
该选项用于定义属性信息。
[hadoop@strong ~]$ hive --hiveconf mapreduce.job.reduces=10
hive> set mapreduce.job.reduces;
mapreduce.job.reduces=10
10)--hivevar选项
和变量-d作用相同。
2 Hive批量模式命令
当$HIVE_HOME/bin/hive运行时带有-e或-f参数时,它以批量形式执行SQL命令,示例如上面的-e和-f选项讲解。
3 HIve交互式Shell命令
当$HIVE_HOME/bin/hive运行时不带有-e或-f参数时,它进入交互式模式。每个命令务必以;结束,否则命令不会执行。
1)quit/exit
这两个命令用于在交互式模式退出Hive Shell。
hive> exit;
[hadoop@strong ~]$
2)set
该命令用于以键值对方式设置配置变量,或打印变量。
hive> set mapreduce.job.reduces=10;
hive> set mapreduce.job.reduces;
mapreduce.job.reduces=10
3)reset
该命令用于重置配置变量为默认值。
hive> reset;
hive> set mapreduce.job.reduces;
mapreduce.job.reduces=-1
4)!
该命令用于在Hive Shell中使用Shell命令。
hive> ! pwd;
/home/hadoop
5)source
该命令用于在CLI执行脚本文件。
hive> source test.hql;
OK
Time taken: 0.619 seconds
OK
1 Alen
2 Jane
3 Tom
Time taken: 3.994 seconds, Fetched: 3 row(s)
6)dfs
该命令用于在Hive Shell执行dfs命令。
hive> dfs -ls /user/hive;
Found 2 items
drwxrwxrwx - hadoop supergroup 0 2018-06-19 16:37 /user/hive/tmp
drwxrwxrwx - hadoop supergroup 0 2018-06-20 17:30 /user/hive/warehouse
3 Hive资源相关命令
用法:
ADD { FILE[S] | JAR[S] | ARCHIVE[S] } <filepath1> [<filepath2>]* LIST { FILE[S] | JAR[S] | ARCHIVE[S] } [<filepath1> <filepath2> ..] DELETE { FILE[S] | JAR[S] | ARCHIVE[S] } [<filepath1> <filepath2> ..]