Hive 整合Hbase

摘要

Hive提供了与HBase的集成,使得能够在HBase表上使用HQL语句进行查询 插入操作以及进行Join和Union等复杂查询、同时也可以将hive表中的数据映射到Hbase中。

?
?

应用场景

2.1 将ETL操作的数据存入HBase

?
?

?
?

??
?

2.2 HBase作为Hive的数据源

?
?

?
?

2.3 构建低延时的数据仓库

环境准备

?
?

?
?

3.1 hive与hbase整合环境配置

  • 修改hive-site.xml文件,添加配置属性(zookeeper的地址)

    [root@hadoop01 conf]# vim hive-site.xml


<property>

<name>hbase.zookeeper.quorum</name>

<value>node1:2181,node2:2181,node3:2181</value>

</property>

?
?

  • 引入hbase的依赖包

    将hbase安装目录下的lib文件夹下的包导入到hive的环境变量中,在hive-env.sh 文件中添加

    [root@hadoop01 conf]# vim hive-env.sh


export HIVE_CONF_DIR=/usr/local/hive/conf

export HIVE_CLASSPATH=$HIVE_CLASSPATH:$HBASE_HOME/lib/*

?
?

至此、hive与hbase整合环境准备完成。

实战

4.1 hbase表映射到hive表中

  • 在hbase中创建表:表名hbase_test, 有三个列族 f1、f2、f3

    ?
    ?


create
‘hbase_test‘,{NAME => ‘f1‘,VERSIONS => 1},{NAME => ‘f2‘,VERSIONS => 1},{NAME => ‘f3‘,VERSIONS => 1}

?
?

  • 插入数据

    ?
    ?


put ‘hbase_test‘,‘r1‘,‘f1:name‘,‘zhangsan‘

put ‘hbase_test‘,‘r1‘,‘f2:age‘,‘20‘

put ‘hbase_test‘,‘r1‘,‘f3:sex‘,‘male‘

put ‘hbase_test‘,‘r2‘,‘f1:name‘,‘lisi‘

put ‘hbase_test‘,‘r2‘,‘f2:age‘,‘30‘

put ‘hbase_test‘,‘r2‘,‘f3:sex‘,‘female‘

put ‘hbase_test‘,‘r3‘,‘f1:name‘,‘wangwu‘

put ‘hbase_test‘,‘r3‘,‘f2:age‘,‘40‘

put ‘hbase_test‘,‘r3‘,‘f3:sex‘,‘male‘

?
?

?
?

?
?

  • 查询数据

    ?
    ?

    ?
    ?

  • 创建基于hbase的hive表

    ?
    ?


CREATE EXTERNAL TABLE hiveFromHbase(

rowkey string,

f1 map<STRING,STRING>,

f2 map<STRING,STRING>,

f3 map<STRING,STRING>

) STORED BY
‘org.apache.hadoop.hive.hbase.HBaseStorageHandler‘

WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,f1:,f2:,f3:")

TBLPROPERTIES ("hbase.table.name" = "hbase_test");

?
?

这里使用外部表映射到HBase中的表,这样,在Hive中删除表,并不会删除HBase中的表,否则,就会删除。另外,除了rowkey,其他三个字段使用Map结构来保存HBase中的每一个列族。

  • hbase.columns.mapping

    Hive表和HBase表的字段映射关系,分别为:Hive表中第一个字段映射:key(rowkey),第二个字段映射列族f1,第三个字段映射列族f2,第四个字段映射列族f3

  • hbase.table.name

    HBase中表的名字

    ?
    ?

  • hive中查询hbase表

    ?
    ?

    可以看到,Hive中有3行数据,因为有3个rowkey,每一个列族的列和值,分别被存储到Map结构中

    ?
    ?

  • Hive中插入数据到HBase表

    ?
    ?


insert into table hiveFromHbase

SELECT
‘r4‘
AS rowkey,

map(‘name‘,‘zhaoliu‘) AS f1,

map(‘age‘,‘50‘) AS f2,

map(‘sex‘,‘male‘) AS f3

from person limit 1;

?
?

插入成功后查看2张表的数据

?
?

hive表hiveFromHbase:

?
?

?
?

Hbase表hbase_test:

?
?

?
?

?
?

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

?
?

?
?

4.2 hive表映射到hbase表中

  • 创建映射hbase的表

?
?

create table hive_test(

id string,

name string,

age int,

address string

)STORED BY
‘org.apache.hadoop.hive.hbase.HBaseStorageHandler‘

WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,f1:name,f2:age,f3:address")

TBLPROPERTIES ("hbase.table.name" = "hbaseFromhive");

?
?

?
?

  • 查看hbase映射表是否产生

    ?
    ?

  • 查看hbase映射表的表结构和数据

    ?
    ?

    ?
    ?

    ?
    ?

    由于hive表中没有加载数据,此时hbase中映射的表也无数据

    ?
    ?

    ?
    ?

  • Hive表加载数据

    ?
    ?

    数据来源于另一张表hive_source;


查看hive_source的表结构和数据

?
?

加载数据:

insert overwrite table hive_test select * from hive_source;

?
?

?
?

  • 查看hive和hbase中表的数据

    ?
    ?

    ?
    ?

    映射表可以查看到hive表中的数据。

原文地址:https://www.cnblogs.com/starzy/p/10585792.html

时间: 2024-11-05 18:43:45

Hive 整合Hbase的相关文章

Hive整合HBase——通过Hive读/写 HBase中的表

写在前面一: 本文将Hive与HBase整合在一起,使Hive可以读取HBase中的数据,让Hadoop生态系统中最为常用的两大框架互相结合,相得益彰. 写在前面二: 使用软件说明 约定所有软件的存放目录: /home/yujianxin 一.Hive整合HBase原理 Hive与HBase整合的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive-hbase-handler-0.9.0.jar工具类,如下图 Hive与HBase通信示意图 二.具体步骤 安装前说明 1.关

创建hive整合hbase的表总结

[Author]: kwu 创建hive整合hbase的表总结,如下两种方式: 1.创建hive表的同步创建hbase的表 CREATE TABLE stage.hbase_news_company_content(key string comment "流水号", news_id string comment "新闻id", news_content string comment "文章内容") STORED BY 'org.apache.ha

大数据学习系列之五 ----- Hive整合HBase图文详解

引言 在上一篇 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机) 和之前的大数据学习系列之二 ----- HBase环境搭建(单机) 中成功搭建了Hive和HBase的环境,并进行了相应的测试.本文主要讲的是如何将Hive和HBase进行整合. Hive和HBase的通信意图 Hive与HBase整合的实现是利用两者本身对外的API接口互相通信来完成的,其具体工作交由Hive的lib目录中的hive-hbase-handler-*.jar工具类来实现,通信原理如下图

hive 与 hbase 结合

一.hive与hbase的结合Hive会经常和Hbase结合使用,把Hbase作为Hive的存储路径,所以Hive整合Hbase尤其重要.使用Hive读取Hbase中的数据,可以使用HQL语句在HBase表上进行查询.插入操作:甚至是进行Join和Union等复杂查询.此功能是从Hive 0.6.0开始引入的.Hive与HBase整合的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive-hbase-handler-*.jar工具里面的类实现的.使用Hive操作HBase中

Hive(五):hive与hbase整合

配置 hive 与 hbase 整合的目的是利用 HQL 语法实现对 hbase 数据库的增删改查操作,基本原理就是利用两者本身对外的API接口互相进行通信,两者通信主要是依靠hive_hbase-handler.jar工具类. 但请注意:使用Hive操作HBase中的表,只是提供了便捷性,前面章节已经介绍,hiveQL引擎使用的是MapReduce,对于性能上,表现比较糟糕,在实际应用过程中可针对不同的场景酌情使用. 注意:本文介绍的内容适用的版本见我前面章节,HDP2.4.2 ( HBase

Hbase与hive整合

//hive与hbase整合create table lectrure.hbase_lecture10(sname string, score int) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' whth serdeproperties("hbase.columns.mapping" = ':key,cf1:score')tblproperties("hbase.table.name"

Hadoop Hive与Hbase关系 整合

用hbase做数据库,但因为hbase没有类sql查询方式,所以操作和计算数据很不方便,于是整合hive,让hive支撑在hbase数据库层面 的 hql查询.hive也即 做数据仓库 1. 基于Hadoop+Hive架构对海量数据进行查询:http://blog.csdn.net/kunshan_shenbin/article/details/7105319 2. HBase 0.90.5 + Hadoop 1.0.0 集成:http://blog.csdn.net/kunshan_shenb

hive存储处理器(StorageHandlers)以及hive与hbase整合

此篇文章基于hive官方英文文档翻译,有些不好理解的地方加入了我个人的理解,官方的英文地址为: 1.https://cwiki.apache.org/confluence/display/Hive/StorageHandlers 2.https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration 一 存储处理器介绍 通过HIVE存储处理器,不但可以让hive基于hbase实现,还可以支持cassandra JDBC MongoD

hive与hbase整合

配置环境. hadoop 2.4 hbase 0.98.3 hive 0.13.1(源用的mysql) 配置. 分2种情况(1.hbase与hive在一台机器上,2.hbase与hive不在同一台机器上) (1)hbase与hive在一台机器上 比较简单,只需要在环境变量里把hbase,hive的home配置好即可.当然也可以按照不在一台进行配置. #config hadoop export HADOOP_HOME=/home/hUser/hadoop-2.4.0 export PATH=$HA