首页 > 代码库 > hive与hbase整合

hive与hbase整合

  1. 配置环境.

    hadoop 2.4

    hbase 0.98.3

    hive 0.13.1(源用的mysql)

  2. 配置。

    分2种情况(1.hbase与hive在一台机器上,2.hbase与hive不在同一台机器上)
     (1)hbase与hive在一台机器上

         比较简单,只需要在环境变量里把hbase,hive的home配置好即可。当然也可以按照不在一台进行配置。

#config hadoop
export HADOOP_HOME=/home/hUser/hadoop-2.4.0
export PATH=$HADOOP_HOME/bin:$PATH

#config hbase
export HBASE_HOME=/home/hUser/hbase-0.98.3-hadoop2
export PATH=$PATH:$HBASE_HOME/bin
export HBASE_MANAGES_ZK=true

#config hive
export HIVE_HOME=/home/hUser/apache-hive-0.13.1-bin/
export PATH=$PATH:$HIVE_HOME/bin

    (2)hbase与hive不在同一台机器上。

         首先需要将hbase下的以hbase开头的jar包,放到hive的lib下,同时修改

<property>
  <name>hive.aux.jars.path</name>
  <value>
        file:///home/hUser/apache-hive-0.13.1-bin/lib/hive-hbase-handler-0.13.0.jar,
        file:///home/hUser/apache-hive-0.13.1-bin/lib/protobuf-java-2.5.0.jar,
        file:///home/hUser/apache-hive-0.13.1-bin/lib/hbase-***.jar,.....等等hbase的jar包,
        file:///home/hUser/apache-hive-0.13.1-bin/lib/hbase-common-0.96.0-hadoop2.jar,
        file:///home/hUser/apache-hive-0.13.1-bin/lib/zookeeper-3.4.5.jar,
        file:///home/hUser/apache-hive-0.13.1-bin/lib/guava-11.0.2.jar</value>
</property>

注意:这块是为了好看,但自己配置的时候一定不要有换行符和空格,还有自己把hbase的jar包补齐。太多了我就不贴出来了。

3. 操作

    启动hive

            如果在一台机器就正常启动 hive 就ok了

            不在一台机器需要指定下hbase的zookeeper的位置,多个用逗号分割

        hive -hiveconf hbase.master=127.0.0.1:60000


   (1)建表

CREATE TABLE hbase_table_1(key string, value string) 
STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler‘
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val") 
TBLPROPERTIES ("hbase.table.name" = "xyz1");

   (2)插入数据

          a.在hbase中插入

             put ‘xyz‘,‘test001‘,‘cf1:val‘,‘www.test.com‘

          b.在hive中插入(注:数据类型一定要匹配,否则回报key can‘t be null这个错)

             insert into hbase_table_1 select n.finishtime, n.url from nginx n;

本文出自 “屌丝程序员的逆袭” 博客,请务必保留此出处http://cdelliqi.blog.51cto.com/9028667/1538614