<Zhuuu_ZZ>HBase(三)与Hive集成

5 篇文章 0 订阅

一 Hive与HBase集成使用场景

  • 将HBase作为Hive数据源

    • 让HBase支持类SQL操作
      在这里插入图片描述
  • 将Hive ETL数据存入HBase

    • 便于快速查询
      在这里插入图片描述
  • 构建低延时的数据仓库

    • 利用HBase快速读写能力
    • 实现数据实时查询
      在这里插入图片描述

二 Hive与HBase集成原理

  • 通过两者本身对外的API接口互相通信完成
    • 由Hive的lib目录中hive-hbase-handler-*.jar工具类实现
  • HBaseStorageHandler
    • 实现Hive与HBase集成的类
    • 对HiveStorageHandler接口的实现

三 HBase与Hive集成

首先我们查看一下Hbase中表emp_basic的列簇和字段名

在这里插入图片描述

根据上述信息在Hive里编写一个对应的外部表

当Hbase中表已存在时,要在Hive中创建外部表但不指定location去映射Hbase,此时该外部表不存储数据,有点类似于视图,在Hive中的插入数据会储存到Hbase目录下。而当Hbase不存在表时,只需要将下方命令去掉external变为内部表即可,执行完命令后,hive和hbase都会创建好表,数据同样存在hbase中。
注:在default数据下,无论是内部表还是外部表,都会在hdfs/home/hadoop/hive/warehouse路径下创建表名目录,区别是内部表实际数据储存到表名目录下可删除,外部表实际数据储存到指定location下删表时删不掉(当然不指定也存到表名目录下,可是删除还是删不掉)。当然它们的元数据都存储在mysql里。

-- 在hive中创建外部表
create external table emp_basic(
emp_id string,
emp_name string,
company string,
job_title string,
start_date string,
end_date string)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties
('hbase.columns.mapping'=':key,emp:name,emp:company,emp:job_title,time:sDate,time:eDate')
tblproperties('hbase.table.name'='emp_basic');
  • 在Hive中查询
select * from emp_basic

在这里插入图片描述

在Hive中插入数据,通过HBase查询

  • 在Hive中插入数据(Hive只支持select和insert)
insert into emp_basic values(1111,'hah','lla','gaga','2020-03-01','2020-09-25');

在这里插入图片描述

  • 在Hbase中查询Hive插入的数据
get 'emp_basic','1111'

在这里插入图片描述

在Hbase中插入数据,在Hive中查询

  • 在Hbase插入数据
--在Hbase中插入数据
put 'emp_basic','1111','emp:company','hello'
put 'emp_basic','1111','emp:job_title','dajia'
put 'emp_basic','1111','emp:name','hao'
put 'emp_basic','1111','time:sDate','2020-01-01'
put 'emp_basic','1111','time:eDate','2020-11-11'
--在Hbase中查询
get 'emp_basic','1111'

在这里插入图片描述

  • 在Hive中查询
 select * from emp_basic where emp_id='1111';

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值