使用Hive客户端
操作场景
该任务指导用户在运维场景或业务场景中使用Hive客户端。
前提条件
- 已安装客户端,例如安装目录为“/opt/hadoopclient”,以下操作的客户端目录只是举例,请根据实际安装目录修改。
- 各组件业务用户由MRS集群管理员根据业务需要创建。安全模式下,“机机”用户需要下载keytab文件。“人机”用户第一次登录时需修改密码。
使用Hive客户端(MRS 3.x之前版本)
- 以客户端安装用户,登录安装客户端的节点。
- 执行以下命令,切换到客户端安装目录。
cd /opt/hadoopclient
- 执行以下命令配置环境变量。
source bigdata_env
- 根据集群认证模式,完成Hive客户端登录。
- 安全模式,则执行以下命令,完成用户认证并登录Hive客户端。
beeline
- 普通模式,则执行以下命令,登录Hive客户端,如果不指定组件业务用户,则会以当前操作系统用户登录。
进行beeline连接后,可以编写并提交HQL语句执行相关任务。如需执行Catalog客户端命令,需要先执行!q命令退出beeline环境。
- 安全模式,则执行以下命令,完成用户认证并登录Hive客户端。
- 使用以下命令,执行HCatalog的客户端命令。
hcat -e "cmd"
其中"cmd"必须为Hive DDL语句,如hcat -e "show tables"。
- 若要使用HCatalog客户端,必须从“组件管理”页面单击“下载客户端”,下载全部服务的客户端。Beeline客户端不受此限制。
- 由于权限模型不兼容,使用HCatalog客户端创建的表,在HiveServer客户端中不能访问,但可以使用WebHCat客户端访问。
- 在普通模式下使用HCatalog客户端,系统将以当前登录操作系统用户来执行DDL命令。
- 退出beeline客户端时请使用!q命令,不要使用“Ctrl + c”。否则会导致连接生成的临时文件无法删除,长期会累积产生大量的垃圾文件。
- 在使用beeline客户端时,如果需要在一行中输入多条语句,语句之间以“;”分隔,需要将“entireLineAsCommand”的值设置为“false”。
设置方法:如果未启动beeline,则执行beeline --entireLineAsCommand=false命令;如果已启动beeline,则在beeline中执行!set entireLineAsCommand false命令。
设置完成后,如果语句中含有不是表示语句结束的“;”,需要进行转义,例如select concat_ws('\;', collect_set(col1)) from tbl。
使用Hive客户端(MRS 3.x及之后版本)
- 以客户端安装用户,登录安装客户端的节点。
- 执行以下命令,切换到客户端安装目录。
cd /opt/hadoopclient
- 执行以下命令配置环境变量。
source bigdata_env
- 根据集群认证模式,完成Hive客户端登录。
- 使用以下命令,执行HCatalog的客户端命令。
hcat -e "cmd"
其中"cmd"必须为Hive DDL语句,如hcat -e "show tables"。
- 若要使用HCatalog客户端,必须从服务页面选择“更多 > 下载客户端”,下载全部服务的客户端。Beeline客户端不受此限制。
- 由于权限模型不兼容,使用HCatalog客户端创建的表,在HiveServer客户端中不能访问,但可以使用WebHCat客户端访问。
- 在普通模式下使用HCatalog客户端,系统将以当前登录操作系统用户来执行DDL命令。
- 退出beeline客户端时请使用!q命令,不要使用“Ctrl + C”。否则会导致连接生成的临时文件无法删除,长期会累积产生大量的垃圾文件。
- 在使用beeline客户端时,如果需要在一行中输入多条语句,语句之间以“;”分隔,需要将“entireLineAsCommand”的值设置为“false”。
设置方法:如果未启动beeline,则执行beeline --entireLineAsCommand=false命令;如果已启动beeline,则在beeline中执行!set entireLineAsCommand false命令。
设置完成后,如果语句中含有不是表示语句结束的“;”,需要进行转义,例如select concat_ws('\;', collect_set(col1)) from tbl。
Hive客户端常用命令
常用的Hive Beeline客户端命令如下表所示。
命令 |
说明 |
---|---|
set <key>=<value> |
设置特定配置变量(键)的值。
说明:
若变量名拼错,Beeline不会显示错误。 |
set |
打印由用户或Hive覆盖的配置变量列表。 |
set -v |
打印Hadoop和Hive的所有配置变量。 |
add FILE[S] <filepath> <filepath>*add JAR[S] <filepath> <filepath>*add ARCHIVE[S] <filepath> <filepath>* |
将一个或多个文件、JAR文件或ARCHIVE文件添加至分布式缓存的资源列表中。 |
add FILE[S] <ivyurl> <ivyurl>* add JAR[S] <ivyurl> <ivyurl>* add ARCHIVE[S] <ivyurl> <ivyurl>* |
使用“ivy://goup:module:version?query_string”格式的lvy URL,将一个或多个文件、JAR文件或ARCHIVE文件添加至分布式缓存的资源列表中。 |
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>* |
从分布式缓存中删除资源。 |
delete FILE[S] <ivyurl> <ivyurl>* delete JAR[S] <ivyurl> <ivyurl>* delete ARCHIVE[S] <ivyurl> <ivyurl>* |
从分布式缓存中删除使用<ivyurl>添加的资源。 |
reload |
使HiveServer2发现配置参数指定路径下JAR文件的变更“hive.reloadable.aux.jars.path”(无需重启HiveServer2)。更改操作包括添加、删除或更新JAR文件。 |
dfs <dfs command> |
执行dfs命令。 |
<query string> |
执行Hive查询,并将结果打印到标准输出。 |