Hbase與Hive資料同步
阿新 • • 發佈:2018-12-13
@Author : Spinach | GHB
@Link : http://blog.csdn.net/bocai8058
文章目錄
同步過程
- 在Hbase中建立一張表create ‘user_sysc’, {NAME => ‘info’};
- 在hive中執行如下,從而建立一個外部表user_sysc:
# 在hive中建立一個外表 CREATE EXTERNAL TABLE user_sysc (key int, value string) ROW FORMAT SERDE 'org.apache.hadoop.hive.hbase.HBaseSerDe' STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ( 'serialization.format'='\t', 'hbase.columns.mapping'=':key,info:value', 'field.delim'='\t') TBLPROPERTIES ('hbase.table.name'='user_sysc')
- 將外部表指向hbase中的表,在hive執行如下:
# 將外部表對映到hbase
insert into table user_sysc select id,name from user_info;
- 然後,在hbase裡面執行scan ‘user_sysc’能夠看到:
# 掃描檢視user_sysc中的內容
scan ‘user_sysc’
- 接下來,在hbase裡面執行deleteall ‘user_sysc’, ‘11’刪掉一條資料。例如以下:
# 刪除整行
deleteall ‘user_sysc’, ‘11’
- 然後,在hive裡面查詢看看如下:
說明自己主動同步過來了。因此,僅僅要建立hive表時。與hbase中的表做了對映。表名和欄位名能夠不一致,之後不管在hbase中新增刪除資料還是在hive中。都會自己主動同步。 假設在hive裡面是建立的外部表須要在hbase中先建立。內部表則會在hbase中自己主動建立指定的表名。
由於hive不支援刪除等操作。而hbase裡面比較方便,所以我們能夠採用這樣的方式。