Hive与HBase整合文档

耀灵8个月前技术文章206

1.Hive整合HBase配置

1.拷贝hbase 相关jar包

hbase 相关jar包拷贝到hive lib目录下

hbase-client-0.98.13-hadoop2.jar
hbase-common-0.98.13-hadoop2.jar
hbase-server-0.98.13-hadoop2.jar
hbase-common-0.98.13-hadoop2-tests.jar
hbase-protocol-0.98.13-hadoop2.jar
htrace-core-2.04.jar
hive-hbase-handler-1.0.0.jar
zookeeper-3.4.5.jar



2.修改hive-site.xml配置文件

将上述jar包添加到hive-site.xml配置的hive.aux.jars.path属性中。

1.png


修改hive.zookeeper.quorum属性

2.png

  添加hbase.zookeeper.quorum属性,此属性hive-site.xml之前不存在。

3.png


3.修改hive-env.sh配置文件

同默认配置文件中copy一份hive-env.sh文件

4.png


修改hive-env.sh配置文件

5.png




2.启动Hive

上述配置完成之后,通过bin/hive命令启动hive

6.png


如果出现以上输出信息,说明hive整合hbase成功。


3.Hive整合HBase后使用

(1)测试数据文件

创建测试文件course.csv

7.png

(2)数据加载到HDFS


在hdfs文件系统中创建hive-hbase目录,并加载测试数据。

查看hdfs文件目录


8.png


创建/hive-hbase/course目录

9.png

将course.csv文件上传至/hive-hbase/course目录下

10.png


(3)创建Hive数据库

进入Hive Shell 客户端创建库course


11.png

(4)创建Hive表

进入Hive Shell 客户端创建外部表。

create external table if not exists course.testcourse(cname string,score int) row format delimited fields terminated by '\t' stored as textfile location '/hive-hbase/course';


12.png


(5)查看Hive表数据

select * from course.testcourse;

13.png

从查询语句的执行结果可以看出,Hive表中的数据和hdfs上的数据一致。

2.2 创建Hive内部表

create table 建表语句声明

course.hbase_testcourse 所创建的Hive表名称

(cname string,score int) 所创建Hive表字段

STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 指定使用Hive Storage Handlers

WITH SERDEPROPERTIES("hbase.columns.mapping" = ":key,cf:score") 指定HBase表与Hive表字段映射关系。TBLPROPERTIES("hbase.table.name" = "hbase_testcourse"); 指定HBase表名

内部表创建语句如下:

create table course.hbase_testcourse(cname string,score int) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES("hbase.columns.mapping" = ":key,cf:score") TBLPROPERTIES("hbase.table.name" = "hbase_testcourse", "hbase.mapred.output.outputtable" = "hbase_testcourse");


14.png


1、查看Hive中所创建的表

进入Hive Shell 客户端执行

hive> use course;

hive> show tables;

15.png


2、查看HBase 中所创建的表

进入HBase Shell 客户端执行

bin/hbase shell

16.png


17.png

创建完内部表,可以通过Hive支持的insert overwrite 方式将一个表的数据导入HBase。

下面是对应的执行语句:

insert overwrite table course.hbase_testcourse select cname,score from course.testcourse;


18.png

2.4执行查询

加载完数据后,需要验证一下加载结果是否存在问题,验证一下总记录数。

select count(*) from course.hbase_testcourse;

20.png


2.5创建外部表

创建外部表适用于该表在HBase中已经存在,但在Hive中并没有相关信息。此时可以通过创建外部表的方式,为HBase现有表提供SQL查询条件。而内部表适用于Hive和HBase都没有相关表的情况。

创建HBase

进入HBase Shell客户端执行建表命令

create 'hbase_test',{ NAME => 'cf'}

21.png




执行以下命令插入数据

put 'hbase_test', 'hadoop','cf:score', '95'

put 'hbase_test', 'storm','cf:score', '96'

put 'hbase_test', 'spark','cf:score', '97'


22.png

执行扫描表操作

scan 'hbase_test'

23.png



4、创建Hive外部表

进入Hive Shell 客户端,创建外部表course.hbase_test,建表命令如下所示:

create external table course.hbase_test(cname string,score int) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES("hbase.columns.mapping" = ":key,cf:score") TBLPROPERTIES("hbase.table.name" = "hbase_test", "hbase.mapred.output.outputtable" = "hbase_test");

备注:创建外部表和创建内部表的命令基本一致,唯一的区别就是:创建内部表使用create table,创建外部表使用create external table。


24.png


Hive 查看数据

执行Hive命令查询HBase 表中的数据。

select * from hbase_test;


25.png


通过创建外部表可以成功从Hive 查询HBase表中的数据。

相关文章

短信服务开通

短信服务开通

一、添加模版二、添加签名注意开通港澳台签名如果和国内签名冲突,需要修改国内签名 试用场景为通用,三、子账号授权新建RAM用户并创建AK信息提供 签名名称 以及模版CODE即可参考链接: https:/...

MySQL运维实战(5.5) 数据导入导出时的字符集问题

mysql可以使用load data/select into outfile或mysqldump工具进行数据导入导出。下面分别分析数据导入导出时的字符集相关问题。准备测试数据创建测试表,2个字段分别使...

Grafana简介

Grafana简介

一、Grafana介绍Grafana 是非常强大的可视化项目,它最早从 kibana 生成出来,渐渐也已经形成了自己的生态了。研究完 grafana 生态之后,只有一句话:可视化,grafana 就够...

python-日志分析

1、概述生产中会生成大量的系统日志、应用程序日志、安全日志等等日志,通过对日志的分析可以了解服务器的负载、健康状况,可以分析客户的分布情况、客户的行为,甚至基于这些分析可以做出预测。一般采集流程:日志...

 MySQL运维实战之Clone插件(10.1)使用Clone插件

MySQL运维实战之Clone插件(10.1)使用Clone插件

clone插件介绍mysql 8.0.17版本引入了clone插件。使用clone插件可以对本地l或远程的mysql实例进行clone操作。clone插件会拷贝innodb存储引擎表,clone得到的...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。