Beeline 是 Apache Hive 的官方命令行客户端,基于 SQLLine,通过 JDBC 连接 HiveServer2,生产环境标准工具,用来替代老旧废弃的 Hive CLI。
简单理解:就相当于 Hive 的 mysql‑client,在终端写 HiveSQL 查询数仓数据。
核心要点
- 依赖 HiveServer2:集群必须启动
hiveserver2(默认端口 10000),beeline只是瘦客户端,本身不做计算,SQL全部交给HS2执行。 - 通信:JDBC over Thrift,支持远程连接、多用户并发、Kerberos/LDAP/SSL企业安全认证;旧Hive CLI不支持这些安全能力。
- 两种模式
- 远程模式(生产用):
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.hql4. 导出结果为csv
beeline -u "jdbc:hive2://hive-host:10000" \
--outputformat=csv2 --showHeader=true \
-e "select * from test limit 10;" > result.csvBeeline vs 旧 Hive CLI 对比
| 项目 | Hive CLI(hive命令) | Beeline |
|---|---|---|
| 连接对象 | 直接连Hive Driver | 连接HiveServer2 |
| 协议 | 本地调用 | JDBC/Thrift,支持远程 |
| 安全 | 不支持Kerberos | Ranger/Kerberos/LDAP |
| 并发 | 差,单会话 | 支持多用户并发 |
| 现状 | 已废弃 | 官方推荐生产客户端 |
注意:beeline内部命令以
!开头,例如!tables、!quit,和Hive SQL区分开。
其他含义补充
- 英文单词 beeline:名词,“直线、径直”,
make a beeline for sth径直走向某物。 - Beeline:欧亚地区大型移动运营商(俄罗斯、中亚),电信公司名称。
如果你需要,我可以给你一份常用beeline参数速查表,或者常见报错排查。