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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM