Hbase与Hive数据同步

拜拜、爱过 提交于 2019-11-29 18:13:23
@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里面比较方便,所以我们能够采用这样的方式。

引用:https://www.cnblogs.com/liguangsunls/p/7272848.html


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!