hbase和hive整合

一 、简介

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

 

Hive与HBase的整合功能的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive_hbase-handler.jar工具类, 大致意思如图所示:
hbase.jpg

 

 

1.创建hbase识别的数据库: 

CREATE TABLE hbase_table_1(key int, value string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val") TBLPROPERTIES ("hbase.table.name" = "xyz");

hbase.table.name 定义在hbase的table名称
hbase.columns.mapping 定义在hbase的列族 

2.使用sql导入数据

1) 新建hive的数据表:

CREATE TABLE pokes (foo INT, bar STRING);

2)批量插入数据:

hive> LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO TABLE

3)使用sql导入hbase_table_1:

hive> INSERT OVERWRITE TABLE hbase_table_1 SELECT * FROM pokes WHERE foo=86;

3. 查看数据

 

hive> select * from  hbase_table_1; 

 

这时可以登录Hbase去查看数据了
#bin/hbase shell
hbase(main):001:0> describe 'xyz' 
hbase(main):002:0> scan 'xyz' 
hbase(main):003:0> put 'xyz','100','cf1:val','www.360buy.com'

 

这时在Hive中可以看到刚才在Hbase中插入的数据了。

 

 

4 hive访问已经存在的hbase

使用CREATE EXTERNAL TABLE:
 
CREATE EXTERNAL TABLE hbase_table_2(key int, value string) 
STORED BY 'org.apache.hadoop.hive.hbase.PPHBaseStorageHandler'  
WITH SERDEPROPERTIES ("hbase.columns.mapping" = "cf1:val")  
TBLPROPERTIES("hbase.table.name" = "some_existing_table");  

 

5. 新增功能

   1. :timestamp表示hbase的时间戳

   2. set hbase.max.version=10;来控制hbase在hive里面显示的版本数,默认显示最新版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值