HBase+Hive学习笔记:HBase与Hive协同工作

HBase与Hive协同工作

因为这一部分的内容是HBase与Hive协同工作,所以归在了HBase+Hive这个分类XD,协同的实现是利用两者本身对外的API接口互相进行通信,依靠hive-hbase-handler.jar工具类

测试环境

hive-1.1.0-cdh5.14.0
hbase-1.2.0-cdh5.14.0
hadoop-2.6.0-cdh5.14.0
zookeeper-3.4.5-cdh5.14.0
jdk1.8.0_171

前期准备

1.将$HIVE_HOME/lib下的hive-hbase-handler-1.1.0-cdh5.14.0.jar复制到$HBASE_HOME/lib中
2.将$HBASE_HOME/lib下的所有jar包复制到$HIVE_HOME/lib,这里可以使用yes|cp -r $HBASE_HOME/lib/*.jar $HIVE_HOME/lib以避免输入一大堆的yes
3.将MySQL驱动mysql-connector-java-5.1.40-bin.jar复制到$HIVE_HOME/lib中
4.启动Hadoop、Hive(MetaStore、HiveServer2)、Zookeeper、HBase

测试过程

情景1:HBase中有表,然后要整合到Hive中

先在HBase中创建表worker

create 'worker','info'
put 'worker','test','info:name','tom'
put 'worker','test','info:age','12'

然后在Hive中创建表hive_worker
hbase.table.name是定义在HBase的表名,hbase.columns.mapping是定义HBase表中的列族和字段

create external table hive_worker(key string,name string,age string)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties("hbase.columns.mapping" = ":key,info:name,info:age")
tblproperties("hbase.table.name"="worker");

注意,这里使用了外部表,如果使用内部表,会报错

查询该表

在hive中往表hive_worker添加数据

HBase中也会同步数据过来

情景2:Hive中有表,要整合到HBase中

在Hive中创建测试表test_table

CREATE TABLE test_table(key int, name string,age string)   
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name,info:age")  
TBLPROPERTIES ("hbase.table.name" = "table_test");  

HBase中就会生成一张空表table_test

往Hive表test_table中添加数据

在HBase中scan table_test

数据已经同步过来了,接着在HBase端put数据,发现Hive中的表也会同步数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值