概述:Hive集成HBase能夠有效利用HBase數據庫的存儲特性,如行更新和列索引等。在集成的過程當中注意維持HBase jar包的一致性。Hive與HBase的整合功能的實現是利用二者自己對外的API接口互相進行通訊,相互通訊主要是依靠hive_hbase-handler.jar工具類。html
一、將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