Hive客户端hive与beeline的区别






1、背景描述


Hive的hivebeeline命令都可以为客户端提供Hive的控制台连接。两者之间有什么区别或联系吗?

Hive-cli(hive)是Hive提供的连接Hive数据仓库的命令行工具,从Hive出生就一直存在,但随着Hive功能的增强、BUG的修复及版本升级,Hive-cli结构的局限性已经跟不上Hive的发展,如果强行更改又不能满足向下兼容,于是就出现了全新的beeline命令行结构。值得注意的是,Hive-cli能做的事beeline都能做,而beeline能做的事Hive-cli不一定能做

2、hive客户端


Hive-cli(hive)的主要特点有:

  • Hive-cli是通过访问Metastore服务操作元数据的,且只能访问Metastore服务
  • CliDriver是SQL本地直接编译,然后访问Metastore,提交作业,是重客户端
  • 执行hive会自动运行一个RunJar进程,进程是提供Thrift的RPC的,用于连接Metastore服务

3、beeline客户端


beeline的主要特点有:

  • beeline是一个纯粹的客户端,通过访问hiveserver2服务来操作数据
  • beeline将SQL提交给hiveserver2,由hiveserver2编译,然后访问Metastore,提交作业,是轻客户端
  • 多用户、安全、可以实现其权限控制

4、hive与beeline的关系


hivebeeline的主要区别在于:

1)使用场景

  • Hive-cli:适用于需要直接访问元数据和执行复杂查询的场景,但由于其结构限制,可能无法满足所有需求
  • Beeline‌:适用于需要多用户支持、权限控制和安全性保障的场景。Beeline通过Hiveserver2进行管理,能够实现更细粒度的权限控制‌

2)性能差异

  • 查询效率‌:Beeline在查询效率上通常优于Hive-cli,因为它通过Hiveserver2编译和执行SQL,减少了客户端的负担‌
  • 功能差异‌:Beeline不支持UPDATE和DELETE操作,而Hive-cli则没有这些限制‌

在这里插入图片描述
beeline有权限控制而Hive-cli没有,因为Hive-cli读取元数据绕过了hiveserver2直接从Metastore访问元数据,而beeline通过hiveserver2的管控,实现其多用户的权限控制

在这里插入图片描述
值得注意的是,远程模式下,Beeline客户端只能通过hiveserver2服务访问Hive,而Hive-cli(hive)始终是通过Metastore服务访问Hive的

5、hive与beeline执行SQL


5.1、hive执行SQL(通过操作Metastore)

1) 不进入交互窗口执行SQL

hive -e "sql"

2) 执行SQL脚本文件

hive -f file.sql

5.2、beeline执行SQL(通过连接Hiveserver2)

1) 执行SQL查询

beeline -e "sql"

2) 执行SQL脚本文件

beeline -f file.sql

3) 设置变量传参执行SQL脚本文件

beeline --hivevar k1=v1 --hivevar k2=v2 ... -f file.sql


参考文章:https://www.cnblogs.com/gzgBlog/p/14902120.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值