Hive与HBase整合文档

耀灵3个月前技术文章66

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

相关文章

ORA-00054报错处理

执行语句报错:ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired原因:如错误信息提示,资源正忙(...

MySQL运维实战(5.3) MySQL数据乱码的一些情况

MySQL运维实战(5.3) MySQL数据乱码的一些情况

表数据乱码当数据的真实编码和相关参数(常见的包括character_set_client, character_set_result, 字段的编码,终端的编码)不一致时,会产生乱码。测试1 - 表中的...

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

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

datahub安装部署

datahub安装部署

背景:由于某客户需要建立sparksql的血缘关系,于是乎提出datahub,由于网上关于datahub资料较少,因此这里做以记录datahub作为一个元数据管理平台,他可以对数据资产进行有效的组织,...

MySQL运维实战(2.1) 登录失败次数太多导致主机被block的问题处理

参数max_connect_errorsMySQL有参数max_connect_errors,当一个主机尝试登录MySQL,失败的次数超过了max_connect_errors,则这个主机将无法登录到...

使用clickhouse-backup备份和恢复数据

使用clickhouse-backup备份和恢复数据

介绍clickhouse-backup是altinity提供的一个clickhouse数据库备份和恢复的工具,开源项目地址:https://github.com/Altinity/clickhouse...

发表评论    

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