Hive On Hbase

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

整合hive和hbase的过程

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

二、修改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>

三、拷贝hbase-common-0.96.2-hadoop2.jar到全部hadoop节点(包括master)的hadoop/lib下apache

四、拷贝hbase/conf下的hbase-site.xml文件到全部hadoop节点(包括master)的hadoop/conf下。app

五、启动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联合hbaseoop

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>

六、启动后进行测试
(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"); 

七、数据导入及验证:spa

(1). 建立数据外表data_studentcode

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

相关文章
相关标签/搜索