Hive与HBase整合

首先需要把hive/lib下的hbase包替换成安装的hbase的,需要如下几下:

hbase-client-0.98.2-hadoop2.jar

hbase-common-0.98.2-hadoop2.jar

hbase-common-0.98.2-hadoop2-tests.jar

hbase-protocol-0.98.2-hadoop2.jar

htrace-core-2.04.jar

hbase-server-0.98.2-hadoop2.jar


将hadoop节点添加到hive-site.xml中

<property>

<name>hbase.zookeeper.quorum</name>

<value>所有节点</value>

</property>


如果不加入这个配置,hive中select * from table可以查到数据,但是其它的HQL一走MR,就查不到了,显然是在查HDFS的时候出现了问题,所以这里必须配置上这个


用关联的方式启动hive

hive -hiveconf hbase.master=master地址:6000

进入hive控制台,建立关联表

create table mt (key string, value string) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties ("hbase.columns.mapping" = ":key,hvalue:value") tblproperties ("hbase.table.name" = "mt");


mapping指定hive的表与hbase的表如何对应的格式有些讲究:hive要比hbase多一列,通常这列命名成key,因为hbase有一个默认的rowid列,所以这里key是映射到rowid,映射的格式是hbase列族:列名,因为key是映射到默认列,所以这里写成:key

name指定在hbase上生成的表名,如果要关联hbase上已经存在的表,用create external table 后面的完全一致,即可

执行完成后,会在hbase也生成对应的表,如此一来,就做好了hive与hbase的整合,hive对这个表数据的修改会会在hbase看到,同理,hbase的修改也会在hive看到,这里需要注意一点的时,在hbase中输入数据时,要指定的列名必须是hvalue:value(与maping的第二个映射保持一致,即列族:列名),数据才在增加到hive中,需要注意一下!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值