1. 程式人生 > 其它 >Hive整合HBase(操作HBase中的資料)

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中修改資料,對映的資料也隨之修改