Hive整合HBase(操作HBase中的数据)

Hive整合HBase(操作HBase中的数据)

# Hive整合HBase,必须建立外部表
#在Hive建立外部表
create external table students_hbase
(
id string,
name string,
age string,
gender string, 
clazz string
)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' #HBase提供的类
with serdeproperties ("hbase.columns.mapping" = "	#添加属性:列的映射
:key,		#映射Hive中的id(相当于rowkey)
info:name,	#映射Hive中的name
info:age,	#映射Hive中的age
info:gender,	#映射Hive中的gender
info:clazz	#映射Hive中的clazz
")
tblproperties("hbase.table.name" = "default:stu");	#设计表名

通过映射,将HBase中表stu中的数据映射到了Hive中,通过Hive可以操控HBase中的数据

hive> select * from students_hbase limit 10;
OK
1500100001	施笑槐	22	女	文科六班
1500100002	吕金鹏	24	男	文科六班
1500100003	单乐蕊	22	女	理科六班
1500100004	葛德曜	24	男	理科三班
1500100005	宣谷芹	22	女	理科五班
1500100006	边昂雄	21	男	理科二班
1500100007	尚孤风	23	女	文科六班
1500100008	符半双	22	女	理科六班
1500100009	沈德昌	21	男	理科一班
1500100010	羿彦昌	23	男	理科六班
Time taken: 0.881 seconds, Fetched: 10 row(s)

hive> select clazz,count(id) from students_hbase group by clazz;
文科一班	72
文科三班	94
文科二班	87
文科五班	84
文科六班	104
文科四班	81
理科一班	78
理科三班	68
理科二班	79
理科五班	70
理科六班	91
理科四班	91
Time taken: 68.874 seconds, Fetched: 12 row(s)

进入HBase命令栏

#获取一条数据
hbase(main):003:0> get 'stu','1500100005'
COLUMN                  CELL                                             
info:age               timestamp=1646051646554, value=22                       
info:clazz             timestamp=1646051646554, value=\xE7\x90\x86\xE7\xA7\x91\xE4\xBA\x94\xE7\x8F\xAD                          info:gender            timestamp=1646051646554, value=\xE5\xA5\xB3           
info:name              timestamp=1646051646554, value=\xE5\xAE\xA3\xE8\xB0\xB7\xE8\x8A\xB9                  
1 row(s) in 0.6960 seconds

通过映射,将HBase中表stu中的数据映射到了Hive中,两边的数据是同步的,

如果在Hive或者HBase中修改数据,映射的数据也随之修改

posted @   阿伟宝座  阅读(142)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示