更新时间:2025-05-15 GMT+08:00
分享

Hive客户端使用实践

操作场景

该任务指导用户在运维场景或业务场景中使用Hive客户端。

前提条件

已安装客户端,具体请参考安装客户端章节。例如安装目录为“/opt/hadoopclient”,以下操作的客户端目录只是举例,请根据实际安装目录修改。

操作视频

使用Hive客户端

  1. 以客户端安装用户,登录安装客户端的节点。
  2. 执行以下命令,切换到客户端安装目录。

    cd /opt/hadoopclient

  3. 执行以下命令配置环境变量。

    source bigdata_env

  4. 根据集群认证模式,完成Hive客户端登录。

    • 如果当前集群开启了Kerberos认证,则执行以下命令,完成用户认证并登录Hive客户端,用户需具有创建Hive表的权限例如,该用户属于“hive”、“hadoop”用户组,主组为“hive”。创建用户具体操作请参见创建Hive用户并绑定角色

      认证用户:

      kinit 组件业务用户

      登录Hive客户端:

      beeline
    • 如果当前集群未开启Kerberos认证,则执行以下命令,登录Hive客户端,如果不指定组件业务用户,则会以当前操作系统用户登录。
      beeline -n组件业务用户

  5. 执行以下命令创建表,例如“test”:

    create table test(id int,name string);

  6. 执行以下命令向表中插入数据:

    insert into table test(id,name) values("11","A");

  7. 执行以下命令查询表数据:

    select * from test;

  8. 执行以下命令删除Hive表:

    drop table test;

  9. 执行以下命令退出Hive客户端。

    !q
    • 退出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客户端常用命令

  • 也可使用HCatalog客户端执行Hive表相关操作,命令为:
    hcat -e "cmd"

    其中"cmd"必须为Hive DDL语句,例如:

    hcat -e "show tables"

    需注意:

    • 如果要使用HCatalog客户端,必须从服务页面选择“更多 > 下载客户端”,下载全部服务的客户端。Beeline客户端不受此限制。
    • 由于权限模型不兼容,使用HCatalog客户端创建的表,在HiveServer客户端中不能访问,但可以使用WebHCat客户端访问。
    • 在普通模式下使用HCatalog客户端,系统将以当前登录操作系统用户来执行DDL命令。
  • 常用的Hive Beeline客户端命令如下表所示。

    更多命令可参考https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients#HiveServer2Clients-BeelineCommands

    表1 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://group: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查询,并将结果打印到标准输出。

相关文档

    OSZAR »