Hive整合HBase

版本如下:
hadoop-2.7.2
zookeeper-3.4.6
hive1.2.1
hbase-1.2.11

Hive整合Hbase,其实原理非常简单,因为hive实际存储也是存储在HDFS上,HBase的存储也是依赖于HDFS的,所以实际上还是做了表的维护,也就是元数据的构建,数据本身一直是在HDFS的。
1、修改hive-site.xml文件,是在hive的conf目录下

<property>
    <name>hbase.zookeeper.quorum</name>
    <value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
</property>
##这里将你hbase锁依赖的zookeeper配置一下,注意,是在hive的配置文件中配置,本身hive的配置文件是没有这个选项的

2、修改 hive-env .sh,这个文件是在hive的conf目录下

可能没有hive-env .sh,我们需要对hive-env.sh.template改名,

mv hive-env.sh.template hive-env.sh

然后修改配置文件:

export HADOOP_HOME=/opt/hadoop-2.7.2
export HIVE_CLASSPATH=$HIVE_CLASSPATH:/opt/hbase-1.2.11/lib

##注:这里的文件目录根据自己的路径配置

3、然后就是验证了,我找了一个例子:

##1.首先在hbase中创建一张表

hbase(main):001:0> create 'hbase_test',{NAME => 'f1',VERSION => 1},{NAME => 'f2',VERSION => 1},{NAME => 'f3',VERSION => 1}

##2.然后插入数据并查看数据:
hbase(main):002:0> put 'hbase_test','001','f1:name','liubei'
0 row(s) in 0.1690 seconds

hbase(main):003:0> put 'hbase_test','001','f2:age','30'
0 row(s) in 0.0150 seconds

hbase(main):004:0> put 'hbase_test','001','f3:sex','male'
0 row(s) in 0.0150 seconds

hbase(main):005:0> scan 'hbase_test'
ROW                                COLUMN+CELL                                                                                        
 001                               column=f1:name, timestamp=1551420266121, value=liubei                                              
 001                               column=f2:age, timestamp=1551420277930, value=30                                                   
 001                               column=f3:sex, timestamp=1551420283640, value=male 
 

##3.在hive中创建表,并查看数据,只要创建了表,数据已经被hive所管理了
  ##建表语句
hive> CREATE EXTERNAL TABLE hiveFromHbase(
    > rowkey string,
    > f1 map<STRING,STRING>,
    > f2 map<STRING,STRING>,
    > f3 map<STRING,STRING>
    > ) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    > WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,f1:,f2:,f3:")
    > TBLPROPERTIES ("hbase.table.name" = "hbase_test");
   ##查看数据
hive> select * from hiveFromHbase;
OK
001     {"name":"liubei"}       {"age":"30"}    {"sex":"male"}


##4.再次向hbase中插入数据,完成后从hive中查询
   ##向hbase中插入数据,并在hbase中查看插入的数据
hbase(main):006:0> put 'hbase_test','002','f1:name','guanyu'
0 row(s) in 0.0580 seconds

hbase(main):007:0> put 'hbase_test','002','f2:age','28'
0 row(s) in 0.0150 seconds

hbase(main):008:0> put 'hbase_test','002','f3:sex','female'
0 row(s) in 0.0250 seconds

hbase(main):009:0> scan 'hbase_test'
ROW                                COLUMN+CELL                                                                                        
 001                               column=f1:name, timestamp=1551420266121, value=liubei                                              
 001                               column=f2:age, timestamp=1551420277930, value=30                                                   
 001                               column=f3:sex, timestamp=1551420283640, value=male                                                 
 002                               column=f1:name, timestamp=1551420485877, value=guanyu                                              
 002                               column=f2:age, timestamp=1551420490547, value=28                                                   
 002                               column=f3:sex, timestamp=1551420494665, value=female

   ##在hive中直接查询数据
hive> select * from hiveFromHbase;
OK
001     {"name":"liubei"}       {"age":"30"}    {"sex":"male"}
002     {"name":"guanyu"}       {"age":"28"}    {"sex":"female"}


哦了@

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值