Hive命令行介绍

来源:互联网 发布:什么叫数据流量 编辑:程序博客网 时间:2024/06/04 10:49

简介

$HIVE_HONE/bin/hive命令工具是与Hive服务交互的最常用的方式,是学习和熟悉Hive重要的工具。本文总结了Hive命令行的常见用法,能够帮助读者快速了解和学习Hive。

hive命令选项

在配置Hive时,已经将$HIVE_HONE/bin加入PATH中,用户只要在shell提示符中输入hive,就可以在shell环境中找到这个命令。

hadoop@bob-virtual-machine:~$ hive --helpUsage ./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 versionParameters parsed:  --auxpath : Auxillary jars  --config : Hive configuration directory  --service : Starts specific service/component. cli is defaultParameters used:  HADOOP_HOME or HADOOP_PREFIX : Hadoop install directory  HIVE_OPT : Hive optionsFor help on a particular service:  ./hive --service serviceName --helpDebug help:  ./hive --debug --help
--auxpath参数允许用户指定一个以冒号分割的"附属的"JAR,用来支持用户自定义的扩展。
--config文件目录,允许用户用于覆盖$HIVE_HOME/conf中的默认的属性配置,而指向一个新的配置文件目录
--service用于指定具体的服务,帮助信息中给出了支持的服务列表,缺省为cli。

命令行界面

CLI选项
下面的命令显示了CLI所提供的选项列表:
hadoop@bob-virtual-machine:~$ hive --service cli --helpusage: 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中属性和变量命名空间:

命名空间
使用权限
描述
hivevar
rw
用户自定义变量
hiveconf
rw
Hive相关的配置属性
system
rw
Java定义的配置属性
env
r
shell环境定义的环境变量
了解命名空间,再来分析相关的CLI属性选项。--define key=value和--hivevar key=value是等价的,都是向hivevar命名空间中添加属性。--hiveconf key=value用于设置Hive相关的配置属性。
在CLI中,可以使用SET命令显示或者修改变量的值,在CLI查询语句中引用变量需要使用${命名空间:属性名}的方式,实际查询中的变量引用会先被替换掉然后才会提交给查询处理器。前缀hivevar:是可选的。

hadoop@bob-virtual-machine:~$ hive --define foo=barhive> set foo;foo=barhive> set hivevar:foo;hivevar:foo=barhive> create table toss1 (i int, ${hivevar:foo} string);OKTime taken: 2.535 secondshive> desc toss1;OKi                       intbar                     stringTime 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 warehousehive.metastore.warehouse.dir=hdfs://localhost:9000/user/hive/warehousehive.warehouse.subdir.inherit.perms=true

执行文件中Hive查询
-f选项允许hive执行指定文件中的一个或者多个查询语句。按照惯例,一般把这些查询语句保存在以.q或.hql为后缀的文件中。该功能等同于在shell中使用source命令来执行一个脚本文件。

$ hive -f /home/hadoop/withqueries.hql$ hivehive >  source /home/hadoop/withqueries.hql
hiverc文件
-i选项允许用户指定一个文件,当CLI启动时,在提示符出现前执行这个文件。Hive会自动在HOME目录下寻找名为.hiverc的文件,且自动执行这个文件中的命令。对于用户需要频繁使用的属性,使用这个文件非常方便。
自动不全功能
如果用户在输入过程中敲击Tab制表键,那么CLI会自动不全可能的关键字或者函数名。
执行shell命令
用户不需要退出CLI就可以执行简单的bash shell命令,只要在命令前加上!并且以分号(;)结束即可。

参考资料

1. Hive编程指南