关联 Hive 与 Hbase的数据一致


Mysql+Hive:1、Centos7 MySQL安装 —— 用网盘简单安装

2、Hadoop集群搭建及配置⑨——Hive 可靠的安装配置

3、Spark SQ操作 MySQL数据库和 Hive数据仓库

4、Spark SQL RDD基本操作、RDD—DataFrame、API MySQL

5、Spark SQL RDD、DataFrame、Dataset、反射推断机制 Schema 操作!!



8、Hadoop集群搭建及配置⑥ —— Hadoop组件安装及配置

9、Hadoop集群搭建及配置⑦—— Spark&Scala安装配置

10、Hadoop集群搭建及配置⑧——Hbase的安装配置

11、eclipse配置连接Hadoop

12、eclipse 实现 Hdfs java API

13、eclipse 实现 HBase java API

14、Hbase java API 实现增删改查


一、介绍

在安装好 zookeeper、hadoop、hbase、hive 基础上,才能继续下面操作,没有安装完成的可以点击上方链接,进行安装。

1.1 原因

在实际业务中,由于 HBase不支持使用 SQL语法,因此我们操作和计算 HBase分布式数据库中的数据是非常不方便的,并且效率也低。

由于Hive支持标准的SQL语句,因此,我们可以将HBase和Hive进行整合,通过使用Hive数据仓库操作HBase分布式数据库中的数据,以此来满足实际业务的需求。


二、文件配置

2.1 导入依赖 (master)

将目录 /hbase-1.2.4/lib下的相关依赖复制一份到目录/hive-2.1.1/lib下。

cp /usr/hbase/hbase-1.2.4/lib/hbase-common-1.2.4.jar /usr/hive/hive-2.1.1/lib/

cp /usr/hbase/hbase-1.2.4/lib/hbase-server-1.2.4.jar /usr/hive/hive-2.1.1/lib/

cp /usr/hbase/hbase-1.2.4/lib/hbase-client-1.2.4.jar /usr/hive/hive-2.1.1/lib/

cp /usr/hbase/hbase-1.2.4/lib/hbase-protocol-1.2.4.jar /usr/hive/hive-2.1.1/lib/

cp /usr/hbase/hbase-1.2.4/lib/hbase-it-1.2.4.jar /usr/hive/hive-2.1.1/lib/

cp /usr/hbase/hbase-1.2.4/lib/htrace-core-3.1.0-incubating.jar /usr/hive/hive-2.1.1/lib/

cp /usr/hbase/hbase-1.2.4/lib/hbase-hadoop2-compat-1.2.4.jar  /usr/hive/hive-2.1.1/lib/

cp /usr/hbase/hbase-1.2.4/lib/hbase-hadoop-compat-1.2.4.jar /usr/hive/hive-2.1.1/lib/

在这里插入图片描述

  • hbase-common-1.2.4.jar 是 Hbase的基本包;
  • hbase-server-1.2.4.jar 主要用于hbase 的服务端;
  • hbase-client-1.2.4.jar 主要用于hbase 的客户端;
  • hbase-protocol-1.2.4.jar 主要用于hbase 的通信;
  • hbase-it-1.2.4.jar 主要用于hbase 整合其他框架做测试;
  • htrace-core-3.1.0-incubating.jar 主要用于其他框架(Hive,Spark) 连接Hbase;
  • hbase-hadoop2-compat-1.2.4.jar,hbase-hadoop-compat-1.2.4.jar 使得HBase可以兼容hadoop2.0 和其他版本。

2.2 修改 hive-site.xml (master)

<!--指定zookeeper集群的地址-->
<property>
        <name>hive.zookeeper.quorum</name>
        <value>master,slave1,slave2</value>
        <description>zookeeper集群的URL配置,多个host中用逗号(,)分割</description>
</property>

<!--指定zookeeper客户端的端口号-->
<property>
 <name>hive.zookeeper.property.client.port</name>
  <value>2181</value>
</property>

在这里插入图片描述

2.3 启动相关服务

cd /usr/zookeeper/zookeeper-3.4.10(此目录下)
# 1、三个节点都启动 zookeeper
bin/zkServer.sh start
bin/zkServer.sh status (注意已经生效环境变量,环境变量开机重启后要手动再生效!!)
bin/zkServer.sh stop(关闭)

# 2、master 节点启动 hadoop
/usr/hadoop/hadoop-2.7.3/sbin/start-all.sh

# 3、slave1启动 Hive服务端(先)
/usr/hive/hive-2.1.1/bin/hive --service metastore

# 4、master 作为客户端开启 hive(后)
/usr/hive/hive-2.1.1/bin/hive

# 5、启动 hbase
/usr/hbase/hbase-1.2.4/bin/start-hbase.sh

在这里插入图片描述


三、Hbase 与 Hive连接

3.1 创建Hive表

创建 hive_hbase_test 库

create table hive_hbase_test(
id int,name string,sex string,interest string,age int,grade double)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties ("hbase.columns.mapping" = ":key,info:name,info:sex,info:interest,info:age,info:grade")
tblproperties ("hbase.table.name"="hbase_test");

org.apache.hadoop.hive.hbase.HBaseStorageHandler 语句是把 hbase 与 hive 关联起来,hive创建的表会映射到 hbase数据库,且映射表名字是:hbase_test
在这里插入图片描述

3.2 创建中间表

由于不能将数据直接插入与 hbase 关联的Hive表 hive_hbase_test ,所以需要一个中间表 text。

3.3 插入数据

在linux 本地上创建 text.txt ,每个字段需要用 ‘\t’ 隔开。

1	liyi	female	reading	23	94.50
2	chener	man	baseketball	21	91.00
3	zhangning	female	writeing	20	79.00
4	lixi	female	pingpang	18	88.50
5	wangwu	man	baseball	16	78.00
6	huangting	female	reading	22	96.00
7	tianqi	man	baseketball	25	87.00

在这里插入图片描述
把数据插入 hive_hbase_test

# 向临时表text插入数据
load data local inpath '/usr/text.txt' into table text;

# 将临时表数据导入 hive_hbase_test
insert into table hive_hbase_test select * from text;

在这里插入图片描述

3.4 测试是否数据一致

# 1.hive 输入命令:
select * from hive_hbase_test;

# 2.hbase 输入命令:
scan 'hbase_test'

在这里插入图片描述
在这里插入图片描述
可以看出两者的数据是一致的,则整合完成。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唐樽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值