Hive与HBase的继承使用

Hive的特点是查询效率块,但是不易插入和修改;Hbase的特点是方便对大量的数据进行处理,所以为了提高我们的工作效率,把二者结合起来使用。

Hive与Hbase继承使用场景

  • 将Hbase作为Hive的数据源,让Hbase支持类SQL操作;
  • 将Hive ETL数据存入HBase,便于快速查询;
  • 构建低延时的数据仓库。利用HBase的快速读写能力,实现数据实时查询。

Hive与HBase的集成原理

通过二者本身对外的API接口互相通信完成
由Hive的lib目录中hive-hbase-handler-*.jar工具类实现。

HBaseStorageHandler
实现Hive与HBase集成的类
对HiveStorageHandler接口的实现

代码实现

我们以下面的一些数据为例来做演示:

在这里插入图片描述
我们要实现的是Hive与Hbase的交互,那么创建的表肯定在满足Hive格式的同时也要满足Hbase的格式。我们把emp_id设为rowkey,emp_name/job_title/company把这三列归为一个列簇,start_date和quit_date归为一个列簇。
首先需要在Hbase中创建一个表格:

create 'emp_basic',{NAME=>'emp'},{NAME=>'time'}

然后在Hive中创建一个外部表:

create external table emp_basic(
emp_id string,
emp_name string,
job_title string,
company string,
start_date string,
quit_date string)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties
('hbase.columns.mapping'=':key,emp:name,emp:job_title,emp:company,time:sDate,time:eDate')
tblproperties('hbase.table.name'='emp_basic');

:key指的是rowkey,后面分别为对应的列簇和列。
‘hbase.table.name’='emp_basic’为对应Hbase上的表名。
接下来我们插入数据。插入数据当然是要选择插入速度更快的Hbase来实现。
1、把文件上传到hdfs

hdfs dfs -put /test/emp_basic.csv /data/emp 

2、把文件从hdfs导入到hbase

hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator=',' -Dimporttsv.columns='HBASE_ROW_KEY,emp:name,emp:job_title,emp:company,time:sDate,time:eDate' 'emp_basic' /data/emp/emp_basic.csv

在这里插入图片描述
3.导入成功后,在Hbase或者Hive中查询数据信息:
Hbase:

get 'emp_basic','1'

在这里插入图片描述
Hbase所展现的信息其实并不方便我们的查看,这也是需要借助Hive的一个重要原因。实际上,Hbase原本就是为Hive而产生的。
Hive中查看:

select * from emp_basic;

在这里插入图片描述
此时Hive和Hbase的关联就成功了。我们可以通过Hbase来实现数据的增删改,用Hive实现数据的快速查询。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值