码迷,mamicode.com
首页 > 其他好文 > 详细

HBase与Hive的集成操作

时间:2020-05-25 14:00:35      阅读:51      评论:0      收藏:0      [点我收藏+]

标签:height   etl   hive   base   union   XML   映射   ESS   pac   

1.介绍

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

2.模型概念

  2.1 将ETL操作的数据存入HBase

    技术图片

  2.2 HBase作为Hive的数据源

    技术图片

  2.3 构建低延时的数据仓库

    技术图片

3.搭建环境

  3.1 修改hive-site.xml文件 

<property>
    <name>hive.zookeeper.quorum</name>
<value>hadoop102,hadoop103,hadoop104</value>
</property>
<property>
    <name>hive.zookeeper.client.port</name>
<value>2181</value>
</property>
<property>
    <name>hive.server2.enable.doAs</name>
    <value>false</value>
</property>

  3.2 更新jar文件

#删除hive的安装目录下默认存在的hbase的jar文件
rm -rf /opt/module/hive/lib/hbase-*.jar
#将hbase的lib目录下的jar文件复制到hive下
cp /opt/module/hbase/lib/hbase-*.jar /opt/module/hive/lib
#删除hive安装目录下默认存在的zookeeper的jar文件
rm -rf /opt/module/hive/lib/zookeeper-*.jar
#将zookeeper下的jar文件复制到hive下
cp /opt/module/zookeeper/zookeeper-*.jar /opt/module/hive/lib  

4.案例

  4.1 HBase的表映射到Hive中

    4.1.1 在HBase中创建的表如下

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

    4.1.2 插入如下数据

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

    4.1.3 查询数据

      技术图片

    4.1.4 创建基于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.HBaseStorageHandlerWITH 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上的表名;

    4.1.5 连接hive,查看hivefromhbase表中的数据

      技术图片

  4.2 hive中插入数据到hbase表

    4.2.1 创建映射hbase的表

create table hive_test(id String,name String,age int,address String)STORED BY org.apache.hadoop.hive.hbase.HBaseStorageHandlerWITH SERDEPROPERTIES("hbase.columns.mapping"=":key,f1:name,f2:age,f3:address")TBLPROPERTIES("hbase.table.name"="hbaseFromhive");

    4.2.2 查看hbase的映射表是否产生

      技术图片

    4.2.3 查看hbase映射表中的数据

      技术图片

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

    4.2.4 向hive的数据表中插入数据

insert into table hive_test values(001,sjdf,18,beijing);

    4.2.5 再次检索位于hbase的映射数据表

      技术图片

 

HBase与Hive的集成操作

标签:height   etl   hive   base   union   XML   映射   ESS   pac   

原文地址:https://www.cnblogs.com/wnwn/p/12956453.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!