hive整合hbase

starzy starzy     2023-03-10     673

关键词:

摘要

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表中的数据。

hive教程---整合hbase

目录6.4.1HBase与Hive的对比6.4.2HBase与Hive集成使用6.4.1HBase与Hive的对比Hive(1)数据仓库Hive的本质其实就相当于将HDFS中已经存储的文件在Mysql中做了一个双射关系,以方便使用HQL去管理查询。(2)用于数据分析、清洗Hive适用于离线的数据... 查看详情

hbase_hive整合

Hive与HBase的整合功能的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive_hbase-handler.jar工具类首先保证版本一致cd/home/hadoop/hive-1.1.0-cdh5.5.2/lib查看版本是否一致hbase-server-1.0.0-cdh5.5.2.jar zookeeper-3.4.5-cdh5.5.... 查看详情

hive与hbase整合(代码片段)

Hive与Hbase整合1.文档  HiveHBaseIntegration 2.拷贝jar文件2.1.把Hbase的lib目录下面的jar文件全部拷贝到Hive的lib目录下面cd/home/hbase/libcp./*/home/hive/lib 2.2.把Hive的lib目录下面的hive-hbase-handler-0.13.1.jar拷贝到Hbase的lib目录下面cp/home/hiv... 查看详情

hive整合hbase

...源?? ??2.3构建低延时的数据仓库 环境准备????3.1hive与hbase整合环境配置修改hive-site.xml文件,添加配置属性(zookeeper的地址)[root@hadoop01conf]#vimhive-site.xml <property> <name>hbase.zookeeper.quorum</name> <value&... 查看详情

spark:spark-sql读hbase

    SparkSQL是指整合了Hive的spark-sqlcli,本质上就是通过Hive访问HBase表,具体就是通过hive-hbase-handler,具体配置参见:Hive(五):hive与hbase整合 目录:SparkSql访问hbase配置测试验证SparkSql访问hbase配置: 拷贝HBase的相关j... 查看详情

hbase可以访问hive里面的表吗

参考技术A使用hive-hbase-handler,通过在Hive中建立外部表可以映射到HBase中的表,然后在Hive中往外部表中INSERT数据,即可完成对HBase表的数据插入。你可以搜索"lxw的大数据田地"查看Hive与HBase整合的相关文章。 查看详情

hadoop基础之《—整合hbase+phoenix+hive》

一、HBase简介1、HBase定义ApacheHBase是以HDFS为数据存储的,一种分布式、可扩展的NoSQL数据库(非关系型,以k,v的形式存储数据)。HBase可以认为是以HDFS为存储的数据库。2、HBase数据模型(1)HBase的设计理念... 查看详情

hadoop基础之《(11)—整合hbase+phoenix+hive—安装hive》(代码片段)

一、什么是Hive1、Hive简介Hive是由Facebook开源,基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。Hive主要是做海量数据的分析和计算的。2、为什么会有Hive?它解决了什... 查看详情

hive+hbase,用hql查询hbase(代码片段)

Hive整合HBase:数据实时写Hbase,实现在Hive中用sql查询以下操作的Hive版本:2.3.6,HBase版本:2.0.4在HBase中创建表:t_hbase_stu_infocreate‘t_hbase_stu_info‘,‘st1‘在Hive中创建外部表:t_hive_stu_infocreateexternaltablet_hive_stu_info(idint,namestring,ageint,s... 查看详情

spark访问与hbase关联的hive表

知识点1:创建关联Hbase的Hive表知识点2:Spark访问Hive知识点3:Spark访问与Hbase关联的Hive表 知识点1:创建关联Hbase的Hive表两种方式创建,内部表和外部表内部表,如果删除hive表,hbase表也会删除;不建议使用这种方式,大多数... 查看详情

为啥 HBase 支持的 Hive 表使用 MapReduce

】为啥HBase支持的Hive表使用MapReduce【英文标题】:WhyHBasebackedHivetableusesMapReduce为什么HBase支持的Hive表使用MapReduce【发布时间】:2017-09-2301:11:56【问题描述】:我在我的项目中使用Hbase支持的Hive表,但我们选择Hbase支持的Hive的原因... 查看详情

hbase与hive集成(代码片段)

之前有操作过HBase和Hive的案例,将30w条数据从Hive导入HBase。使用sqoop可以快速简单做到,但是在最新版HBase2.0与最新版Hive3.0之间,旧版sqoop不行,因此当时使用了JDBC来连接两者,达到数据导出的目的。HBase与Hive的对比Hive作为数据... 查看详情

hbase表与hive表的映射操作(代码片段)

一、环境准备需要将HBase的jar包拷贝到Hive中,以便Hive运行时能访问到Hbase这里演示创建软连接的方式ln-s$HBASE_HOME/lib/HBase-common-1.3.1.jar$HIVE_HOME/lib/HBase-common-1.3.1.jarln-s$HBASE_HOME/lib/HBase-server-1.3.1.jar$HIVE_HOME/lib/HBase-server-1.3.1.jarln-s$HBASE... 查看详情

hive与hbase的区别与联系

Hive与HBase的区别与联系二者区别Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能。Hive本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表纯逻辑。hive... 查看详情

钻头不显示 hive 或 hbase 表

】钻头不显示hive或hbase表【英文标题】:drillnotshowinghiveorhbasetables【发布时间】:2014-11-0417:18:59【问题描述】:我已经创建了一个hbase和hive表来存储一些数据记录信息。我可以从命令行查询hbase和hive没有问题。hbase:扫描MVLogger;... 查看详情

hive和hbase有啥关系和区别

应该是Hadoop在hbase和Hive中的作用吧。hbase与hive都是架构在hadoop之上的。都是用hadoop作为底层存储。而hbase是作为分布式数据库,而hive是作为分布式数据仓库。当然hive还是借用hadoop的MapReduce来完成一些hive中的命令的执行。而hbase... 查看详情

利用hive-hbase表做hive表快速入库hbase功能,纬度表的查询

...秒出数据,首先表刚好也是1-1批对的情况,首先想到了利用hbase的索引机制。(表数据大概在4--30E之间)虽然网上有很多直接建立hive表,自动创建hbase表的例子,但是这种情况不能进行hbase表的region预分区,导致热点问题比较严重。所以... 查看详情

hbase 到 hive 集成失败

】hbase到hive集成失败【英文标题】:hbasetohiveintegrationfailure【发布时间】:2019-02-2010:15:43【问题描述】:我在“hbase”表中有两个值id和name的行、列族h1“hbase_sample”。我想用id和name列在hive中创建外部表,我不想写行或关键字段... 查看详情