Hive整合HBase(操作HBase中的資料)
阿新 • • 發佈:2022-03-01
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中修改資料,對映的資料也隨之修改