Hive 整合 HBase
为何 Hive 要整合 HBase
HBase 不支持标准 SQL 语句,而且 HBase 做统计分析也不支持 Join 表操作,而这些功能是 Hive 所具备的,所以在实际的生产环境中将二者整合并让 HBase 表中的数据可以使用 Hive SQL 语句及 Join 分析是很有必要的。
整合步骤
注:进入了 hive 的 shell 命令行界面
1. 指定 hive 中 hbase 的 zookeeper 的访问路径
set hbase.zookeeper.quorum=node-01:2181,node-02:2181,node-03:2181;
2. 指定 hbase 在 zookeeper 中存储数据的节点
set zookeeper.znode.parent=/hbase;
3. 将 hive-habse 整合的 jar 包放在 hive 的 classpath 下
add jar /root/apps/hive-3.1.2/lib/hive-hbase-handler-3.1.2.jar;
整合完成:)
验证
1. 在 HBase 中建表
hbase(main):001:0> create 't_hive_hbase','base_info','extra_info'
Created table t_hive_hbase
Took 1.9468 seconds
=> Hbase::Table - t_hive_hbase
# 插入表数据
hbase(main):002:0> put 't_hive_hbase','001','base_info:name','zhangsan'
Took 2.3504 seconds
hbase(main):003:0> put 't_hive_hbase','001','base_info:age','28'
Took 0.0128 seconds
hbase(main):004:0> put 't_hive_hbase','001','extra_info:phone','13500412502'
2. 在 Hive 中建表并关联 HBase 表
create external table t_hive_hbase(rowkey string, base_info map<string, string>, extra_info map<string, string>)
row format delimited fields terminated by '\t'
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties ("hbase.columns.mapping" = ":key,base_info:,extra_info:")
tblproperties ("hbase.table.name" = "t_hive_hbase");
必要的参数解释:
- hbase.columns.mapping:指定 HBase 和 Hive 表的字段的映射关系
- :key:获取 rowkey
- base_info:列名:获取 base_info:列名的值,不写就是默认获取全部
- extra_info:列名:获取 extra_info:列名的值,不写就是默认获取全部
2. 在 Hive 中执行 SQL 查询
select * from t_hive_hbase;
+----------------------+---------------------------------+--------------------------+
| t_hive_hbase.rowkey | t_hive_hbase.base_info | t_hive_hbase.extra_info |
+----------------------+---------------------------------+--------------------------+
| 001 | {"age":"28","name":"zhangsan"} | {"phone":"13500412502"} |
+----------------------+---------------------------------+--------------------------+
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)