Hive On Hbase

概述:Hive集成HBase可以有效利用HBase数据库的存储特性,如行更新和列索引等。在集成的过程中注意维持HBase jar包的一致性。Hive与HBase的整合功能的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive_hbase-handler.jar工具类。

整合hive和hbase的过程

1、将hbase下的hbase-common-0.96.2-hadoop2.jar和 zookeeper-3.4.5.jar 拷贝(覆盖)到HIVE_HOME/lib文件夹下

2、修改hive/conf下的hive-site.xml文件,添加如下内容:

1 <property>
2 <name>hive.querylog.location</name>
3 <value>$HIVE_HOME/logs</value>
4 </property>
5 
6 <property>
7 <name>hive.aux.jars.path</name> 
8 <value>file:///hive-0.7.1/lib/hive-hbase-handler-0.7.1.jar,file:///hive-0.7.1/lib/hbase-common-0.96.2-hadoop2.jar,file:///hive-0.7.1/lib/zookeeper-3.3.2.jar</value>
9 </property>

3、拷贝hbase-common-0.96.2-hadoop2.jar到所有hadoop节点(包括master)的hadoop/lib下

4、拷贝hbase/conf下的hbase-site.xml文件到所有hadoop节点(包括master)的hadoop/conf下。

5、启动hive
单节点启动:bin/hive -hiveconf hbase.master=master:60000
如果hive-site.xml文件中没有配置hive.aux.jars.path,则可以按照如下方式启动。

1 hive --auxpath /opt/mapr/hive/hive-0.7.1/lib/hive-hbase-handler-0.7.1.jar,/opt/mapr/hive/hive-0.7.1/lib/hbase-0.90.4.jar,/opt/mapr/hive/hive-0.7.1/lib/zookeeper-3.3.2.jar -hiveconf hbase.master=localhost:60000 

集群启动:bin/hive -hiveconf hbase.zookeeper.quorum=node1,node2,node3 (所有的zookeeper节点)
经测试修改hive的配置文件hive-site.xml,就可以不用增加参数启动hive联合hbase

1 <property>
2 <name>hive.zookeeper.quorum</name>
3 <value>node1,node2,node3</value>
4 <description>The list of zookeeper servers to talk to. This is only needed for read/write locks.</description>
5 </property>

6、启动后进行测试
(1).构建Hbase表hbase_student
 1 hbase> create hbase_student, info 
(2).构建hive外表hive_student, 并对应hbase_student表
Hive集成HBase需要在Hive表和HBase表之间建立映射关系,也就是Hive表的列(columns)和列类型(column types)与HBase表的列族(column families)及列限定词(column qualifiers)建立关联。
每一个在Hive表中的域都存在于HBase中,而在Hive表中不需要包含所有HBase中的列。
HBase中的RowKey对应到Hive中为选择一个域使用 :key 来对应,列族中的列在Hive中为 cf:q。

1 CREATE EXTERNAL TABLE hive_student (rowkey string, name string, age int, phone string)
2 STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
3 WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name,info:age,info:phone")
4 TBLPROPERTIES("hbase.table.name" = "hbase_student"); 

7、数据导入及验证:

(1). 创建数据外表data_student

1 CREATE EXTERNAL TABLE data_student (rowkey string, name string, age int, phone string)
2 ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' 
3 LOCATION '/test/hbase/tsv/input/'; 

(2). 数据通过hive_student导入到hbase_student表中

1 SET hive.hbase.bulk=true;
2 INSERT OVERWRITE TABLE hive_student SELECT rowkey, name, age, phone FROM data_student;

 

转自:https://www.cnblogs.com/skyl/p/4849163.html

    原文作者:hbase
    原文地址: https://www.cnblogs.com/zh-yp/p/9067582.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞