Hive安装及与HBase的整合(3)

5 Hive整合HBase原理

Hive与HBase整合的实现是利用两者本身对外的API接口互相通信来完成的,其具体工作交由Hive的lib目录中的hive-hbase-handler-*.jar工具类来实现,通信原理如下图所示。

<a href=Hive安装及与HBase的整合" src="/uploads/allimg/200603/1SP2N13_0.png" />

Hive整合HBase后的使用场景:

(一)通过Hive把数据加载到HBase中,数据源可以是文件也可以是Hive中的表。

(二)通过整合,让HBase支持JOIN、GROUP等SQL查询语法。

(三)通过整合,不仅可完成HBase的数据实时查询,也可以使用Hive查询HBase中的数据完成复杂的数据分析。

6 Hive整合HBase配置 6.1 Hive映射HBase表

// 如果hbase是集群,需要修改hive-site.xml文件配置

$ vim hive-site.xml

<property>
  <name>hbase.zookeeper.quorum</name>
  <value>node1,node2,node3</value>
</property>

// 将hbase lib目录下的所有文件复制到hive lib目录中

$ cd app/hive-1.1.0-cdh5.7.1/

$ cp ~/app/hbase-1.2.0-cdh5.7.1/lib/* lib/

// 在hive中创建映射表

$ hive shell

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

备注:在hive中创建表hive_hbase_test,这个表包括两个字段(int型的key和string型的value),映射为hbase中的表hive_hbase_test,key对应hbase的rowkey,value对应hbase的cf1:val列。

Hive安装及与HBase的整合

// 在hbase中查看是否存在映射表

$ hbase shell

> list

Hive安装及与HBase的整合

6.2 整合后功能测试

// 创建测试数据

$ vim poke.txt

1      zhangsan

2      lisi

3      wangwu

// 在hive中创建一个poke表并加载测试数据

> create table poke(key int,valuestring) row format delimited fields terminated by '\t';

> load data local inpath'/home/developer/poke.txt' overwrite into table poke;

> select * from poke;

Hive安装及与HBase的整合

// 将hive的poke表中的数据加载到hive_hbase_test表

> insert overwrite table hive_hbase_test select * from poke;

> select * from hive_hbase_test;

Hive安装及与HBase的整合

// 查看hbase的hive_hbase_test表中是否有同样的数据

> scan 'hive_hbase_test'

Hive安装及与HBase的整合

需要说明以下几点:

(一)Hive映射表的字段是HBase表字段的子集。整合之后的Hive表不能被修改。

(二)Hive中的映射表不能直接插入数据,所以需要通过将数据加载到另一张poke表,然后通过查询poke表将数据加载到映射表。

(三)上述示例是通过创建内部表的方式将Hive表映射到HBase表,HBase表会自动创建,而且Hive表被删除后HBase表也会自动删除。

(四)如果HBase表已有数据,可以通过创建Hive外部表的方式将Hive表映射到HBase表,通过HQLHive表实现对HBase表的数据分析。Hive表删除将不会对HBase表造成影响。创建外部表的方法如下:

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

Hadoop+HBase搭建云存储总结 PDF

Ubuntu Server 14.04 下 Hbase数据库安装 

HBase 结点之间时间不一致造成regionserver启动失败

CentOS 6.3下HBase伪分布式平台搭建 

Hadoop集群安装&HBase实验环境搭建

基于Hadoop集群的HBase集群的配置

Hadoop安装部署笔记之-HBase完全分布模式安装

CentOS 6.4下HBase集群安装

HBase 的详细介绍请点这里
HBase 的下载地址请点这里

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/812cd4d644815183fe621c6228ed2bb9.html