Beeline 是 Apache Hive 的官方命令行客户端,基于 SQLLine,通过 JDBC 连接 HiveServer2,生产环境标准工具,用来替代老旧废弃的 Hive CLI

简单理解:就相当于 Hive 的 mysql‑client,在终端写 HiveSQL 查询数仓数据。

核心要点

  1. 依赖 HiveServer2:集群必须启动 hiveserver2(默认端口 10000),beeline只是瘦客户端,本身不做计算,SQL全部交给HS2执行。
  2. 通信:JDBC over Thrift,支持远程连接、多用户并发、Kerberos/LDAP/SSL企业安全认证;旧Hive CLI不支持这些安全能力。
  3. 两种模式
    • 远程模式(生产用)jdbc:hive2://host:10000,连接集群HS2服务,主流用法。
    • 嵌入模式:本地直接跑Hive,基本不用。

常用命令示例

1. 交互式进入beeline shell

# 普通账号
beeline -u "jdbc:hive2://hive-host:10000/default" -n username -p password
 
# Kerberos环境(无账号密码)
beeline -u "jdbc:hive2://hive-host:10000/default;principal=hive/hive-host@REALM.COM"

进入后提示符 0: jdbc:hive2://xxx> ,直接写Hive SQL即可,!quit退出。

2. 非交互执行单条SQL(脚本、调度常用)

beeline -u "jdbc:hive2://hive-host:10000" -e "select * from test limit 10;"

3. 执行hql脚本文件

beeline -u "jdbc:hive2://hive-host:10000" -f ./task.hql

4. 导出结果为csv

beeline -u "jdbc:hive2://hive-host:10000" \
--outputformat=csv2 --showHeader=true \
-e "select * from test limit 10;" > result.csv

Beeline vs 旧 Hive CLI 对比

项目Hive CLI(hive命令)Beeline
连接对象直接连Hive Driver连接HiveServer2
协议本地调用JDBC/Thrift,支持远程
安全不支持KerberosRanger/Kerberos/LDAP
并发差,单会话支持多用户并发
现状已废弃官方推荐生产客户端

注意:beeline内部命令以 ! 开头,例如 !tables!quit,和Hive SQL区分开。

其他含义补充

  1. 英文单词 beeline:名词,“直线、径直”,make a beeline for sth 径直走向某物。
  2. Beeline:欧亚地区大型移动运营商(俄罗斯、中亚),电信公司名称。

如果你需要,我可以给你一份常用beeline参数速查表,或者常见报错排查。