简介
$HIVE_HONE/bin/hive命令工具是与Hive服务交互的最常用的方式,是学习和熟悉Hive重要的工具。本文总结了Hive命令行的常见用法,能够帮助读者快速了解和学习Hive。hive命令选项
在配置Hive时,已经将$HIVE_HONE/bin加入PATH中,用户只要在shell提示符中输入hive,就可以在shell环境中找到这个命令。hadoop@bob-virtual-machine:~$ hive --help
Usage ./hive <parameters> --service serviceName <service parameters>
Service List: beeline cleardanglingscratchdir cli hbaseimport hbaseschematool help hiveburninclient hiveserver2 hplsql hwi jar lineage llapdump llap llapstatus metastore metatool orcfiledump rcfilecat schemaTool version
Parameters parsed:
--auxpath : Auxillary jars
--config : Hive configuration directory
--service : Starts specific service/component. cli is default
Parameters used:
HADOOP_HOME or HADOOP_PREFIX : Hadoop install directory
HIVE_OPT : Hive options
For help on a particular service:
./hive --service serviceName --help
Debug help: ./hive --debug --help
--auxpath参数允许用户指定一个以冒号分割的"附属的"JAR,用来支持用户自定义的扩展。
--config文件目录,允许用户用于覆盖$HIVE_HOME/conf中的默认的属性配置,而指向一个新的配置文件目录
--service用于指定具体的服务,帮助信息中给出了支持的服务列表,缺省为cli。
命令行界面
CLI选项下面的命令显示了CLI所提供的选项列表:
hadoop@bob-virtual-machine:~$ hive --service cli --help
usage: hive
-d,--define <key=value> Variable subsitution 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 subsitution 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)
变量与属性
在介绍变量和属性前,先介绍一下Hive中属性和变量命名空间:在CLI中,可以使用SET命令显示或者修改变量的值,在CLI查询语句中引用变量需要使用${命名空间:属性名}的方式,实际查询中的变量引用会先被替换掉然后才会提交给查询处理器。前缀hivevar:是可选的。
hadoop@bob-virtual-machine:~$ hive --define foo=bar
hive> set foo;
foo=bar
hive> set hivevar:foo;
hivevar:foo=bar
hive> create table toss1 (i int, ${hivevar:foo} string);
OK
Time taken: 2.535 seconds
hive> desc toss1;
OK
i int
bar string
Time taken: 0.392 seconds, Fetched: 2 row(s)
设置属性时有一个需要注意的地方,就是属性优先级层次的问题,按照优先级由高到低的顺序排列: hive set命令、命令行--hiveconf选项、hive-site.xml、hive-default.xml、hadoop-site.xml(或等价的core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml)。有时在排查问题时会用到。
”一次执行“命令
如果用户有时期望执行一个或多个查询(分号分割),执行结束后hive CLI立即退出,这时需要使用-e参数。这里需要注意的是,Hive会将结果输出的标准输出中。
hadoop@bob-virtual-machine:~$ hive -e "set" | grep warehouse
hive.metastore.warehouse.dir=hdfs://localhost:9000/user/hive/warehouse
hive.warehouse.subdir.inherit.perms=true
执行文件中Hive查询
-f选项允许hive执行指定文件中的一个或者多个查询语句。按照惯例,一般把这些查询语句保存在以.q或.hql为后缀的文件中。该功能等同于在shell中使用source命令来执行一个脚本文件。
$ hive -f /home/hadoop/withqueries.hql
$ hive
hive > source /home/hadoop/withqueries.hql
hiverc文件
-i选项允许用户指定一个文件,当CLI启动时,在提示符出现前执行这个文件。Hive会自动在HOME目录下寻找名为.hiverc的文件,且自动执行这个文件中的命令。对于用户需要频繁使用的属性,使用这个文件非常方便。
自动不全功能
如果用户在输入过程中敲击Tab制表键,那么CLI会自动不全可能的关键字或者函数名。
执行shell命令
用户不需要退出CLI就可以执行简单的bash shell命令,只要在命令前加上!并且以分号(;)结束即可。