[本文2000字左右,预计阅读需要15-20分钟]
让我们来回顾下之前用到的Hive用户的交互接口。Hive用户接口主要有三个:命令行(CLI),客户端(Client)和Web界面(WUI)。$HIVE_HOME/bin/hive这个shell命令是通向包括命令行界面也就是CLI等等Hive服务的通道。Hive命令行CLI是最常用的命令行接口,今天让我们来介绍下Hive命令行接口(Hive Command Line) 和Hive交互式Shell(Hive Interactive Shell)命令的一些使用以及Hive的一些内置服务。
1
Hive命令行CLI的使用
01Hive命令行接口
输入$HIVE_HOME/bin/hive -H或 –help可以显示帮助选项
具体选项的解释如下
简单下几个选项
-d,define
$HIVE_HOME/bin/hive -dk1=v1–databasedataaccess
上述命令表示,定义了一个变量k1,值为v1,执行数据库为dataaccess。
进入Hive交互Shell之后,可以使用${k1}来引用该变量,比如:
Hive>select‘${k1}’fromdatalimit1
这里将k1的值v1打印出来。
-e
当有需求是期望执行一个或多个查询(使用分号分隔),执行结束后Hive CLI立即退出,Hive CLI可以接受-e命令这种形式,
例如,执行以下命令:
$HIVE_HOME/bin/hive –e‘select*fromdataaccess.datalinit10’
直接进行查询操作。临时应急时可以使用这个功能将查询结果保存到一个文件中。增加-S选项可以开启静默模式,这样可以在输出结果中去掉“OK”和“Time taken”等行,以及其他一些无关紧要的输出信息。
-f
Hive中可以使用-f文件名的方式执行指定文件中的一个或多个查询语句,例如
在sql.txt中输入
select * from dataaccess.data;
执行以下命令直接进行查询操作。
$HIVE_HOME/bin/hive –fsql.txt
-hiveconfig
可以使用该选项设定Hive的运行参数配置,相当于在Hive交互Shell中使用set命令进行设置。比如,执行以下命令
$HIVE_HOME/bin/hive –hiveconfmapred.reduce.tasks=20
进入交互Shell之后,运行的所有查询都会设置20个reduce task,除非又用set mapred.reduce.tasks=N;进行另外设定。
-hivevar 。
使用方式与-d,-define一样。
执行
$HIVE_HOME/bin/hive -hivevark2=v2–databasedataaccess
表示,定义了一个变量k2,值为v2,执行了数据库为dataaccess。
进入Hive交互Shell之后,可以使用${k2}来引用该变量,比如:
Hive>select‘${k2}’fromdatalimit 1
这里将k2的值v2打印出来。
02Hive交互式Shell命令
Hive交互Shell指执行$HIVE_HOME/bin/hive之后,进入的有hive>提示符的交互式命令行,在这里可以执行查询语句,设置参数等等,所有的命令必须以分号结束,具体有以下命令和选项:
quit或exit:
退出交互式Shell
set –v:
打印出所有Hive的配置参数和Hadoop配置参数。
set = :
设置Hive运行时参数,优先级最高,相同的key,后面的设置会覆盖前面的设置。
reset:
重置所有Hive运行时配置的参数,如之前使用Set命令设置的reduce数量,reset之后,重置为hive-site.xml中的配置。
!
在交互Shell中执行Linux操作系统命令并打印出结果,不常用
比如:
dfs
在交互Shell中执行hadoop fs 命令,不常用
比如,列出hdfs文件系统中目录:
最常用的,执行HQL语句,以分号结尾;
source FILE
在交互Shell中执行一个脚本,不常用。
准备一个HQL脚本,里面写入查询语句:
select *fromdataaccess.data;
在交互Shell中执行该脚本进行查询。
2
内置服务
Hive内部自带了许多的服务,我们可以在运行时用–service选项来明确指定使用什么服务,如果不知道Hive内部有多少服务,可以用下面的–service help来查看帮助。如下:
$hive--servicehelpUsage./hive--serviceserviceNameServiceList:beelineclihelphiveserver2hiveserverhwijarlineagemetastoremetatoolorcfiledumprcfilecatParametersparsed:--auxpath:Auxillaryjars--config:Hiveconfigurationdirectory--service:Startsspecificservice/component.cliisdefaultParametersused:HADOOP_HOMEorHADOOP_PREFIX:HadoopinstalldirectoryHIVE_OPT:HiveoptionsForhelponaparticularservice:./hive--serviceserviceName--helpDebug help: ./hive --debug --help
可以看到上面的输出项Service List,里面显示出Hive支持的服务列表:
beeline
cli
help
hiveserver2
hiveserver
hwi
jar
lineage
metastore
metatool
orcfiledump
rcfilecat
下面介绍最有用的一些服务。
cli:这个就是Command Line Interface的简写,是Hive的命令行界面,用的比较多。这是默认的服务,直接可以在命令行里面使用。
hiveserver:这个可以让Hive以提供Trift服务的服务器形式来运行,可以允许许多不同语言编写的客户端进行通信。使用需要启动HiveServer服务以和客户端联系,我们可以通过设置HIVE_PORT环境变量来设置服务器所监听的端口号,在默认的情况下,端口为10000。可以通过下面方式来启动hiveserver:
$ bin/hive--servicehiveserver-p10002
Starting Hive Thrift Server
其中-p参数也是用来指定监听端口的。
hwi:其实就是hive web interface的缩写,它是Hive的Web接口,是hive cli的一个web替换方案。
jar:与Hadoop jar等价的Hive的接口,这是运行类路径中同时包含Hadoop和Hive类的Java应用程序的简便方式。
metastore:在默认情况下,metastore和Hive服务运行在同一个进程中。使用这个服务,可以让metastore作为一个单独的进程运行,我们可以通过METASTORE_PORT来指定监听的端口号。