【七】HBase集成Hive(Hive On HBase)

16 篇文章 1 订阅

使用场景

1.通过Hive把数据加载到HBase中,数据源可以是文件也能是表。HBase集成Hive后,hive表数据增加的同时,HBase中的数据也会增加。

2.HBase的查询不支持join和group by。可以通过Hive整合HBase的方式让HBase支持这些操作(先把HBase的数据加载到Hive中,通过Hive的语法来join和group by)。

3.HBase实时的插入数据,或者周期性的加载数据文件,通过Hive直接查询这些数据,Hive不用再加载一次数据了。

4.结合Hive的数据分析和HBase实时数据的优点。

Hive映射HBase表

官网介绍

Storage Handlers :Hive的字段和HBase中的列都是通过Storage Handler来维护的。创捷Hive表把存储格式指定为Storage Handler。这个程序被编译成一个独立的模块,在Java中它就是一个独立的jar包hive-hbase-handler-X.X.X.jar,Hive的客户端必须要能识别到这个jar包,通过--auxpath来指定。

Hive启动方式:直接拷贝HBase所有lib下Jar包到Hive lib中。然后直接启动hive。

cd /app/hive/lib

cp /app/hbase/lib/* /app/hive/lib
cd /app/hive/bin
hive

Hive集成HBase可以有效利用HBase的存储特性,如更新和列索引等。

Hive表与HBase表之间需要建立映射关系

每个在Hive表中的域都存在HBase中,而在Hive表中不需要包含所有HBase中的列

create table tablename(
key int,
value string
)stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties("hbase.columns.mapping"=":rowkey,cf1:value")
tblproperties("hbase.table.name"="xyz")

不用提前在HBase中创建表,它会自动创建。

创建hive表指定hbase映射的例子。

create table hiveonhbase(
key int,
value string
)stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties("hbase.columns.mapping"=":key,cf1:value")
tblproperties("hbase.table.name"="hiveonhbase")

 

查看HBase中是否有了这张表。

这张hive表已经映射了hbase的表,所以往这张hive表写数据要用insert select的方式。整合的表不能修改。

创建一张表test,load数据进去,之后hiveonhbase表会insert select from test表的数据

create table testhiveonhbase(
key int,
value string
)
ROW FORMAT DELIMITED
   FIELDS TERMINATED BY '\t';

load data local inpath '/app/hive/testData/testhiveonhbase.txt' overwrite into table testhiveonhbase;

通过查询的方式把test表的数据加载到hiveonhbse

insert overwrite table hiveonhbase select * from testhiveonhbase;

查看hive中hiveonhbase表是否有数据

select * from hiveonhbase;

查看hbase中hiveonhbase表是否有数据

scan 'hiveonhbase'

对于HBase中已有的表做Hive映射

这样创建外表

create external table hiveonhbase_wc(
key string,
word string,
value string
)stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties("hbase.columns.mapping"=":key,cf:word,cf:value")
tblproperties("hbase.table.name"="wc");

查看hive上是否有HBase已经建立好的表的数据

select * from hiveonhbase_wc;

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值