Hive学习之Hive CLI

       Hive命令行接口(CLI)提供了执行Hive QL、设置参数等功能,要启用CLI只需要在命令行下执行$HIVE_HOME/bin/hive命令。在命令下执行hive –H可以查看CLI选项,如下表所示:

-d,--define <key=value>

应用于Hive命令的变量替换,如-d  A=B或者--define A=B

--database <databasename>

指定所使用的数据库

-e <quoted-query-string>

执行命令行指定SQL

-f <filename>

执行文件中的SQL

-H,--help

打印帮助信息

-h <hostname>

连接远程主机上的Hive服务器

--hiveconf <property=value>

使用给定变量的值

--hivevar <key=value>

应用于Hive命令的变量替换,如--hivevar A=B

-i <filename> 

初始化SQL文件

-p <port>

在指定端口上连接Hive服务器

-S,--silent

在交互式shell下启动Silent模式

-v,--verbose

Verbose模式,在控制台回显执行的SQL

       当使用参数-e或者-f时,hive以batch模式执行SQL语句,当hive不带-e或者-f时,hive进入交互式模式。下面先看一些batch模式的例子,然后再学习交互式模式下的一些命令。

1.       第一个例子是在命令行下执行SQL语句。

[hadoop@hadoop ~]$ hive -e 'show tables'
Logging initialized using configuration injar:file:/home/hadoop/hive-0.13.0/lib/hive-common-0.13.0.jar!/hive-log4j.properties
OK
page_view
pokes
Time taken: 1.619 seconds, Fetched: 2 row(s)

2.       第二个例子是在Silent模式下将数据转储到指定的文件中。

[hadoop@hadoop~]$ hive -S -e 'show tables' > a.txt
[hadoop@hadoop~]$ cat a.txt
page_view
pokes

       当hive不带-e或者-f时,hive进入交互式模式,在交互式模式下使用分号终止命令的输入,开始执行命令,脚本中的命令可以使用--前缀指定。交互模式下的常见命令如下表所示:

命令

描述

quit 
exit

使用quit或者exit命令离开交互模式。

reset

重置配置参数为默认值

set <key>=<value>

设置配置参数为指定的值,注意如果拼错参数名,CLI不提示错误。

set

打印被覆盖默认值的参数。

set -v

打印所有HadoopHive的配置参数。

add FILE[S] <filepath> <filepath>* 
add JAR[S] <filepath> <filepath>* 
add ARCHIVE[S] <filepath> <filepath>*

添加一个或者多个文件、jar或者归档到分布式缓存中的资源列表中。

list FILE[S] 
list JAR[S] 
list ARCHIVE[S]

列出已经添加到分布式缓存中的资源。

list FILE[S] <filepath>* 
list JAR[S] <filepath>* 
list ARCHIVE[S] <filepath>*

检查指定的资源是否已经添加到分布式缓存中。

delete FILE[S] <filepath>* 
delete JAR[S] <filepath>* 
delete ARCHIVE[S] <filepath>*

删除分布式缓存中的资源。

! <command>

CLI中执行shell命令。

dfs <dfs command>

CLI中执行HDFS命令。

<query string>

执行Hive语句并打印结果到标准输出。

source FILE <filepath>

CLI中执行脚本文件。

      下面是上述命令的一下例子:

hive> setmapred.reduce.tasks=32;
hive> setmapred.reduce.tasks;
mapred.reduce.tasks=32
hive> dfs -ls/user/hive/;
Found 1 items
drwxr-xr-x   - hadoop supergroup          0 2014-05-23 16:43/user/hive/warehouse
hive> select* from page_view;
OK
Time taken: 8.06seconds
hive> listfiles;
/home/hadoop/a.txt
hive> reset;
hive> setmapred.reduce.tasks;
mapred.reduce.tasks=-1

       上面提到的add、list、delete命令分别向分布式缓存添加、列出和删除普通文件、jar文件和归档文件,那这些文件有什么用途呢?这些文件作为会话的额外资源在查询执行时可以使用,任何本地可访问的文件都可以添加到会话中。一旦文件被加入到会话中,Hive查询可以通过文件资源的名称引用它(在map/reduce/transform子句中)并且在执行时该资源文件在整个Hadoop集群上都是本地可用的。Hive在查询执行时使用Hadoop的分布式缓存将资源分布到集群中的所有机器上。

       普通文件资源通常是像转换脚本一类的文件,该类型的文件仅仅被加入到分布式缓存中。JAR文件也会加入到classpath中,这就要求依次引用包含诸如UDF的对象。归档文件在分布时自动解压缩。

你可能感兴趣的:(hadoop,cli,hive,command)