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中修改数据,映射的数据也随之修改

浙公网安备 33010602011771号