Hive和Hbase整合使用,注意事项,细节等,没有讲整合的环境搭建

15 篇文章 0 订阅

配置 hive 与 hbase 整合的目的是利用 HQL 语法实现对 hbase 数据库的增删改查操作,基本原理就是利用两者本身对外的API接口互相进行通信,两者通信主要是依靠hive_hbase-handler.jar工具类。

但请注意:使用Hive操作HBase中的表,只是提供了便捷性,前面章节已经介绍,hiveQL引擎使用的是MapReduce,对于性能上,表现比较糟糕,在实际应用过程中可针对不同的场景酌情使用。

至于整合的环境的搭建,请小伙伴自行baidu,不好意思

比如hbase中的如下表,结构如下

开始整合
1 进入hive创建映射表
这里使用外部表映射到HBase中的表,这样,在Hive中删除表,并不会删除HBase中的表,否则,就会删除

Hive中的外部表hive_mytest_4,就和其他外部表一样,只有一份元数据,真正的数据是在HBase表中,Hive通过hive-hbase-handler来操作HBase中的表。

create external table if not exists hive_mytest_4(
    rowkey string,
    yuwen string,
    shuxue string,
    english string,
    grade map<string, string>
) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,course:yuwen,course:shuxue,course:english,grade:")
TBLPROPERTIES ("hbase.table.name" = "ns1:mytest_4");

解读说明:
         1 前面部分是hive的表名和列信息,后面部分是hbase中表名和列信息
         2 hbase中,只有列族的,没有列标识符的,如下面的grade (此情况最好避免)
            hbase中用grade:表示,hive中要用map类型的,较特殊,用grade map<string, string>表示
         3 hbase中的rowkey用:key来表示 

执行语句 时,将多余的空格去掉,否则会报错,到此,整合就结束了

演示通过hive往hbase表中添加数据
1 准备如下数据 text1.txt

stu_1,10,11,13,grade:chun
stu_2,12,13,14,grade:chun
stu_3,102,513,124,grade:good
stu_4,612,143,134,grade:good
stu_5,122,193,154,grade:yiban
stu_6,142,183,134,grade:yiban
stu_7,152,133,164,grade:verygood
stu_8,12,153,164,grade:haoyangde

2 创建中间的hive临时表temp_table_1,并把临时表里添加数据

//临时表
create table temp_table_1(
    rowkey string,
    yuwen string,
    shuxue string,
    english string,
    grade map<string, string>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',' 
COLLECTION ITEMS TERMINATED BY ',' 
MAP KEYS TERMINATED BY ':'
LINES TERMINATED BY '\n';

//将数据加载到临时表
LOAD DATA LOCAL INPATH '/tmp/text1.txt' INTO TABLE temp_table_1;

select * from temp_table_1;

3 将临时表(temp_table_1)的数据插入到正式的表中(hive_mytest_4)

insert into table hive_mytest_4 select * from temp_table_1;

4 剩下的hive查询,hbase查询,该怎么操作就怎么操作就可以了

select * from hive_mytest_4;

select rowkey,yuwen,shuxue,english,grade['grade'] from hive_mytest_4;

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值