首页 > 其他分享 >Hive与HBase的整合

Hive与HBase的整合

时间:2022-12-15 19:32:25浏览次数:63  
标签:work jar hive Hive 整合 hbase HBase


开场白:


Hive与HBase的整合功能的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive_hbase-handler.jar工具类 (​​Hive Storage Handlers​​), 大致意思如图所示:


口水:

 对 hive_hbase-handler.jar 这个东东还有点兴趣,有空来磋磨一下。

一、2个注意事项:

1、需要的软件有 Hadoop、Hive、Hbase、Zookeeper,Hive与HBase的整合对Hive的版本有要求,所以不要下载.0.6.0以前的老版本,Hive.0.6.0的版本才支持与HBase对接,因此在Hive的lib目录下可以看见多了hive_hbase-handler.jar这个jar包,他是Hive扩展存储的Handler ,HBase 建议使用 0.20.6的版本,这次我没有启动HDFS的集群环境,本次所有测试环境都在一台机器上。

     

2、运行Hive时,也许会出现如下错误,表示你的JVM分配的空间不够,错误信息如下:

Invalid maximum heap size: -Xmx4096m

The specified size exceeds the maximum representable size.

Could not create the Java virtual machine.

解决方法:

/work/hive/bin/ext# vim util/execHiveCmd.sh 文件中第33行

修改,

HADOOP_HEAPSIZE=4096



HADOOP_HEAPSIZE=256

另外,在 /etc/profile/ 加入 export $HIVE_HOME=/work/hive

二、启动运行环境

1启动Hive

hive –auxpath /work/hive/lib/hive_hbase-handler.jar,/work/hive/lib/hbase-0.20.3.jar,/work/hive/lib/zookeeper-3.2.2.jar -hiveconf hbase.master=127.0.0.1:60000

加载 Hive需要的工具类,并且指向HBase的master服务器地址,我的HBase master服务器和Hive运行在同一台机器,所以我指向本地。

2启动HBase

/work/hbase/bin/hbase master start

3启动Zookeeper

/work/zookeeper/bin/zkServer.sh start

三、执行

在Hive中创建一张表,相互关联的表

CREATE TABLE hbase_table_1(key int, value string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val") TBLPROPERTIES ("​​​hbase.table.name​​" = "xyz");

在运行一个在Hive中建表语句,并且将数据导入

建表

    CREATE TABLE pokes (foo INT, bar STRING);

数据导入

    LOAD DATA LOCAL INPATH '/work/hive/examples/files/kv1.txt' OVERWRITE INTO TABLE pokes;

在Hive与HBase关联的表中 插入一条数据

    INSERT OVERWRITE TABLE hbase_table_1 SELECT * FROM pokes WHERE foo=98;

运行成功后,如图所示:

​​​​

插入数据时采用了MapReduce的策略算法,并且同时向HBase写入,如图所示:


在HBase shell中运行 scan 'xyz' 和describe "xyz" 命令,查看表结构,运行结果如图所示:

​​​​

xyz是通过Hive在Hbase中创建的表,刚刚在Hive的建表语句中指定了映射的属性 "hbase.columns.mapping" = ":key,cf1:val" 和 在HBase中建表的名称 "hbase.table.name" = "xyz"

在hbase在运行put命令,插入一条记录

    put 'xyz','10001','cf1:val','www.javabloger.com'

在hive上运行查询语句,看看刚刚在hbase中插入的数据有没有同步过来,

    select * from hbase_table_1 WHERE key=10001;

如图所示:

​​​​

最终的效果


    以上整合过程和操作步骤已经执行完毕,现在Hive中添加记录HBase中有记录添加,同样你在HBase中添加记录Hive中也会添加, 表示Hive与HBase整合成功,对海量级别的数据我们是不是可以在HBase写入,在Hive中查询 喃?因为HBase 不支持复杂的查询,但是HBase可以作为基于 key 获取一行或多行数据,或者扫描数据区间,以及过滤操作。而复杂的查询可以让Hive来完成,一个作为存储的入口(HBase),一个作为查询的入口(Hive)。如下图示。


    



    


    呵呵,见笑了,以上只是我面片的观点。

先这样,稍后我将继续更新,感谢你的阅读。

  

标签:work,jar,hive,Hive,整合,hbase,HBase
From: https://blog.51cto.com/u_15785444/5945786

相关文章

  • SVN的配置和使用 整合VS10
    1.配置SVN服务器 1.1安装subversion(跨平台版本管理服务器) 1.2建立仓库reposity   命令:svnadmincreated:/reposity   利用Tortoise图形工具,创建仓......
  • SSM整合(spring-springmvc-mybatis)之HelloWorld
    一、目录结构  helloworld(SSM)创建步骤:步骤一:创建一个类型为DynamicWebProject 名称为ssm的项目步骤二:加入jar包:spring核心jar包:commons-logging-1.2.jarspring-bean......
  • 七、activemq整合springmvc之queue
    一、前言spring代码基于​​SSM整合(spring-springmvc-mybatis)之CRUD ​​;代码地址:(基础版本:​​https://gitee.com/joy521125/ssm-senior-base.git​​​maven版:​​htt......
  • HBase RowKey设计
    1HBase表热点1.1什么是热点检索habse的记录首先要通过rowkey来定位数据行。当大量的client访问hbase集群的一个或少数几个节点,造成少数regionserver的读/写请求过多、负......
  • Maven构建spring整合mybatis的项目
    1.使用Maven构建java项目,修改pom.xml文件,添加所需的依赖jar包<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:......
  • OpenMLDB Meetup No.7 回顾 | OpenMLDB+AutoX:整合自动特征工程,拥抱高效机器学习
    OpenMLDBMeetupNo.7回顾会议内容OpenMLDB社区于2022年10月29日举行了第七期meetup,会议相关视频及资料如下:OpenMLDBPMCcoremember卢冕,以《开源机器学习数据库......
  • 演讲实录 | OpenMLDB 整合自动特征工程
    本文整理自OpenMLDB社区开发者、伊利诺伊大学徐鹏程在OpenMLDBMeetupNo.7中的分享——《OpenMLDB整合自动特征工程》。大家好,我是来自伊利诺伊大学的硕士在读学......
  • spring-cloud-alibaba-整合spring-clouid-gateway-3.1.4
    spring-cloud-alibaba-整合spring-clouid-gateway-3.1.4spring-cloud-alibaba-整合spring-clouid-gateway-3.1.4前言版本说明引入spring-cloud-gatewayspring-cloud......
  • SpringBoot整合RabbitMQ
    1、Maven依赖<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.0.RELEASE</vers......
  • Springboot整合mybatis依赖
    <!--    Springboot整合mybatis依赖-->    <dependency>      <groupId>org.mybatis.spring.boot</groupId>      <artifact......