HBase和Hive整合


HBase版本:1.2.6 Hive版本:1.2.1


1. 把HIVE_HOME/lib/hive-hbase-handler-1.2.1.jar 复制到HBASE_HOME/lib/下

2. 把HBASE_HOME/lib下所有的jar 复制到HIVE_HOME/lib/下

# -n 表示对于目标路径下已经存在的文件,则不复制过去
cp -n $HBASE_HOME/lib/* $HIVE_HOME/lib/

3. 修改hive-site.xml文件,增加hbase的zookeeper集群信息

<property>
    <name>hbase.zookeeper.quorum</name>
    <value>node01:2181,node02:2181,node03:2181</value>
</property>

hive集群和hbase集群的所有机器都要做以上修改

4. 验证

(1) 创建hbase表"student"

其中内容如下:

hbase(main):025:0> scan 'student'
ROW     COLUMN+CELL                                                                            
 0001   column=info:age, timestamp=1516139523768, value=15                                     
 0001   column=info:name, timestamp=1516139523388, value=Madeline                              
 0002   column=info:age, timestamp=1516139523820, value=16                                     
 0002   column=info:name, timestamp=1516139523469, value=Jed                                   
 0003   column=info:age, timestamp=1516139523862, value=17                                     
 0003   column=info:name, timestamp=1516139523607, value=Olivia                                
 0004   column=info:age, timestamp=1516139523908, value=18                                     
 0004   column=info:name, timestamp=1516139523680, value=Jed                                   
 0005   column=info:age, timestamp=1516139525527, value=19                                     
 0005   column=info:name, timestamp=1516139523725, value=Sarah

(2) 创建与该hbase表关联的hive表,需为外部表

  1. 关联所有列
CREATE EXTERNAL TABLE hive_student (key string,info map<string, string>)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:")  
TBLPROPERTIES ("hbase.table.name" = "student");
hive> select * from hive_student;
OK
0001    {"age":"15","name":"Madeline"}
0002    {"age":"16","name":"Jed"}
0003    {"age":"17","name":"Olivia"}
0004    {"age":"18","name":"Jed"}
0005    {"age":"19","name":"Sarah"}

hive> select key, info['name'], info['age'] from hive_student;
OK
0001    Madeline    15
0002    Jed         16
0003    Olivia      17
0004    Jed         18
0005    Sarah       19
  1. 关联指定列
CREATE EXTERNAL TABLE hive_student_name (key string,name string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name")  
TBLPROPERTIES ("hbase.table.name" = "student");
hive> select * from hive_student_name;
OK
0001    Madeline
0002    Jed
0003    Olivia
0004    Jed
0005    Sarah

5. 说明

1-3步骤不是必须的,如果没有进行1-3步骤的设置,那么想要让hive和hbase整合,每次进入hive命令行后,需要进行如下配置:

(1) 指定 hbase 所使用的 zookeeper 集群的地址:默认端口是 2181,可以不写

set hbase.zookeeper.quorum=node01:2181,node02:2181,node03:2181;

(2) 指定 hbase 在 zookeeper 中使用的根目录

set zookeeper.znode.parent=/var/zookeeper/local;

# 该路径在hbase-site.xml可以查询,你在搭建hbase集群的时候,这个参数是必须设置的
<property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/var/zookeeper/local</value>
</property>

(3) 加入指定的处理 jar

add jar /home/hadoop/apps/hive-1.2.1/lib/hive-hbase-handler-1.2.1.jar;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

新手指南:DVWA-1.9全级别教程之SQL Injection

目前,最新的DVWA已经更新到1.9版本(点击原文查看链接),而网上的教程大多停留在旧版本,且没有针对DVWA high级别的教程,因此萌发了一个撰写新手教程的...

4618
来自专栏一枝花算不算浪漫

MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合

4229
来自专栏杨建荣的学习笔记

配置dg broker的问题分析及修复(r6笔记第84天)

最近从同事那儿接手了一套新环境,备库因为服务器问题已经下架,重新配了一台服务器,所以需要搭一套备库,主库已经配置好了,而且同事已经把在主库把dg broker配...

3687
来自专栏雨过天晴

原 在已安装Apache和MySQL的Ub

1443
来自专栏张善友的专栏

学习笔记]快速开发Hibernate

樊欢 java及开源项目爱好者。     Email :heydaymail@hotmail.com     Blog :http://heyay.blogon...

2106
来自专栏数据和云

你不可不看的 Oracle RAC 日常基本维护命令

$ srvctl status instance -d orcl -i orcl2

1204
来自专栏我的博客

Thinkphp连接Oracle

'DB_TYPE' => 'oracle', // 数据库类型 'DB_HOST' => 'XXXXXXX', //...

3658
来自专栏乐沙弥的世界

Oracle 密码文件

DBA用户:具有sysdba,sysoper权限的用户被称为dba用户。默认情况下sysdba角色中存在sys用户,sysoper角色中存在system用户

1234
来自专栏散尽浮华

[原创]Gerrit中文乱码问题解决方案分享

应开发同事的要求,部署了Gitlab+Gerrit+Jenkins的持续集成环境. 但是发现了一个问题,Gerrit登陆后有中文乱码出现. 具体情况如下: (1...

3135
来自专栏猿人谷

Oracle RAC基本维护指令

所有实例和服务的状态 $ srvctl status database -d orcl Instance orcl1 is running on node l...

2177

扫码关注云+社区

领取腾讯云代金券