实现Hive查询操作HBase中的数据

浏览: 595

今天主要给大家讲解一下,如何使用Hive来查询及操作HBase里面的数据,也就是实现二者的数据互通互导,相互操作。

首先不了解HBase的亲可以看一下我之前写过的一片博文:

《白话解说:SQL与NoSQL》https://ask.hellobi.com/blog/Matthew112/12341


一、那么看完之后我们先来简单了解一下HBase如何存放数据及对应语法:

HBase 建一张学生表,Row Key是学生编号,两个column family分别为基本信息(info)、地址(address)。

1.行键:决定一行数据。

2.列簇:每个列簇可以有多个列成员(course:Math,course:English),以类似于K-V的形式存储数据。

3.建表语句:create 'table name','column name01','column name02',...,'column nameXX'。

4.插入数据:put 'table name','row key','column name:','value'

二、接下来我们再HBase里面进行实操,建表插数:

建立一张表:

create 'students','info','address'   

1.png

插入几条数据:

put 'students','12001','info:name','max'

put 'students','12001','info:age','20'

put 'students','12001','address:province','Liaoning'

put 'students','12001','address:city','Dalian'

put 'students','12002','info:name','leo'

put 'students','12002','info:age','21'

put 'students','12002','address:province','Hebei'

put 'students','12002','address:city','Guojizhuang'

2.png

看一下HBase中刚刚建好的数据表:

3.png

三、关于HBase的题外话:

HBase查询数据的语法对于一个SQL使用者来说简直就是折磨,在随后的HBase课程中我会向大家详细介绍其两种查询数据的方法及二者的区别:put、scan。

毕竟HBase才是真正意义上的数据库(存储处理海量数据的NoSQL),Hive可以理解为Hadoop的SQL编程接口,敬请关注我的后续HBase课程吧。

四、建立一章Hive表,实现其与HBase数据互通互导:

CREATE EXTERNAL TABLE hbase_to_hive_students(key string, name string,age string,province string,city string)-- key是hbase的rowkey, 各个字段是hbase中的quailiter

STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'                                                                            -- 使用的类

WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name,info:age,address:province,address:city")    -- 字段映射关系

TBLPROPERTIES ("hbase.table.name" = "students");                                                                                                    -- 映射的HBase表

4.png

五、检验一下二者数据互通互道:

Hive端查询:

select * from students;

5.png

HBase端插入数据:

put 'students','12003','info:name','Mathew'

6.png

Hive端数据查询:

select * from students;

7.png

Hive端数据数据插入:

insert into table hbase_to_hive_students values('12004','bill','25','Shandong','Qingdao');

8.png

HBase端数据查询:

scan'students'

9.png                                                    

OK,做到这里,大家可以发现,无论在Hive里面insert还是在HBase里面put插入,两端是都能看到新数据的,这也就完成了Hive与HBase间的数据互通互导。

个人原创,转载请联系!个人原创,转载请联系!个人原创,转载请联系!

推荐 7
本文由 马修 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

4 个评论

666 666 nice a
多谢关注!
大佬,请问后续课程会详细讲解hbase吗?
学员你好,本课程结尾会用大概一小时快速入门HBase,下一门课程会包含 "详细的HBase课程”

要回复文章请先登录注册