hive和hbase整合知识总结

参考资料

1.hive和hbase是基于hadoop的两种应用,从本质上来说, hive是一种类sql的执行引擎,可以使用HQL查询存放在hdfs上的 数据,HQL这种语言最终被转换成MR。
2.而HBase是运行在HDFS上的一种Key-Value系统,它可进行实时交互式查询,是一种NoSql系统。
所以说这两种应用各有千秋,hive具有类sql执行的优势,而hbase具有交互式的特点,那么如果可以让这两者结合的话,是不是就可以充分利用这两者的优点了呢。

查阅hive的官网 确实是提供了

HBaseIntegration
这样的一种功能

在说这种功能之前 先说几个概念术语
non-native概念:
在hive中不仅有从管理表和外部表的角度来分,还有native和non-native的概念
所以可以分为四种情况
1.管理-native表:通过默认方式 create table
2.外部-native表:通过 create external table 但是没有指明 stored by 语句
3.管理-non-native表:hive将表定义存储在metastore中,但是自身不创建任何文件,并且通过请求一个相应的结构,调用storage handler
4.外部-non-native表:create external table 但是指明了存储语句stored by 
所以native就是看hive的存储方式是否是指定的。



既然要关联hive和hbase那么就有一个映射的过程 这个过程需要在建表的时候指定
但是在建表之前需要hive的环境支撑
我使用的版本是
hive-1.2.1
hbase-0.98.18
在网上很多例子都是在hive的启动命令里设置相关jar和配置
其实可以做如下处理
1.导入以下jar到hive的lib中

2.在hive-site.xml中设置
 <property>
    <name>hbase.zookeeper.quorum</name>
    <value>hdp001:2181,hdp002:2181,hdp003:2181</value>
  </property>

创建hive表
CREATE TABLE hbase_hive_03( rowkey string, value1 string)    
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
WITH SERDEPROPERTIES ("hbase.columns.mapping" = " :key,cf1:val")   
TBLPROPERTIES ("hbase.table.name" = "hbase_hive_03",  "hbase.mapred.output.outputtable" = "hbase_hive_03");
注:执行该语句后会在hive端和hbase端都会建立表
hive:  字段 rowkey string, value1 string
对应hbase端的   rowkey,名为cf1列族:val列名(的值)
加粗字段要严格对应
红色标注地方需要设置不然会在其mr任务的时候报错
Must specify table name

创建辅助表
create table ccc(foo int,bar string) row format delimited fields terminated by '\t' lines terminated by '\n' stored as textfile;

下面我们向表中导入数据

从hive端导入
1.先把数据导入到  导入数据到辅助表中
*non-native表是不允许使用load的
 导入数据的方法是从别的表中查询出结果 再插入
load data local inpath '/home/yugang/users.txt' overwrite into table ccc;
样例数据


使用sql导入hbase_table_03
insert overwrite table hbase_table_1 select * from ccc;
起任务

在一开始操作的时候我 执行报错
原因是 high-scale-lib-1.1.1.jar这个jar没有引入
需要导入 high-scale-lib-1.1.1.jar 和guava.jar

2 从hbase端导入, 使用put语句向hbase中设置值
例如


数据加载完后就可以通过hive和hbase两种方式去互相访问了


hive

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值