1. 程式人生 > >Hbase與Hive資料同步

Hbase與Hive資料同步

@Author  : Spinach | GHB
@Link    : http://blog.csdn.net/bocai8058

文章目錄

同步過程

  1. 在Hbase中建立一張表create ‘user_sysc’, {NAME => ‘info’};
  2. 在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')
  1. 將外部表指向hbase中的表,在hive執行如下:
# 將外部表對映到hbase
insert into table user_sysc select id,name from user_info;
  1. 然後,在hbase裡面執行scan ‘user_sysc’能夠看到:
# 掃描檢視user_sysc中的內容
scan ‘user_sysc’
  1. 接下來,在hbase裡面執行deleteall ‘user_sysc’, ‘11’刪掉一條資料。例如以下:
# 刪除整行
deleteall ‘user_sysc’, ‘11’
  1. 然後,在hive裡面查詢看看如下:

說明自己主動同步過來了。因此,僅僅要建立hive表時。與hbase中的表做了對映。表名和欄位名能夠不一致,之後不管在hbase中新增刪除資料還是在hive中。都會自己主動同步。 假設在hive裡面是建立的外部表須要在hbase中先建立。內部表則會在hbase中自己主動建立指定的表名。

由於hive不支援刪除等操作。而hbase裡面比較方便,所以我們能夠採用這樣的方式。