HIVE与HBase的集成

10 篇文章 0 订阅
2 篇文章 0 订阅

作用:

  • 将HBase的数据映射到HIVE表中。

HIVE表类型:

  • 管理表:在HIVE表中建表的同时在HBase中不存在该表,HBase创建相同的表·,数据不是在HIVE中而是在HBase中。
  • 外部表:在HIVE中建表,同时HBase的表要提前存在,数据同样存储在HBase中。(你创建的外部表的数据来源于HBase中)

框架之间的继承操作,首先考虑的是jar包:

可以把HIVE集成HBase需要的jar包拷贝到hive lib目录下面:

1  hbase-server-0.98.6-cdh5.3.6.jar 
2  hbase-client-0.986-cdh5.3.6.jar
3  hbase-potocol-0.98.6-cdh5.3.6.jar 
4  hbase-it-0.98.6-cdh5.3.6.jar
5 hbase-hadoop2-compat-0.98.6-cdh5.3.6.jar 
6 hbase-hadoop-compat-0.98.6-cdh5.3.6.jar
7  high-scale-lib-1.1.1.jar 
8 hbase-common-0.98.6-cdh5.3.6.jar

把以上的jar包拷贝到hive中lib目录下面。

在HIVE中hive-site.xml文件中配置zookeeper信息

<property>
		  <name>hbase.zookeeper.quorum</name>
		  <value>hh</value>
</property>

创建表

  • 创建内部表:
CREATE TABLE hbase_table_3(key int, value string) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
TBLPROPERTIES ("hbase.table.name" = "xyz3", "hbase.mapred.output.outputtable" = "xyz3");

以上的方式创建表为HIVE中的管理表。
特点:HBase中没有该表的前提下,创建之后,HBase中存在这个表。
在创建之后,需要导入数据,不能用load data local inpath… ,需要跑MR程序,所以要使用insert overwrite,将一张表中的数据加载到HIVE表中,加载后数据也不在HIVE中,而是在HBase中。

  • 创建外部表:
CREATE EXTERNAL TABLE hbase_table_4(key int, value string) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = "cf1:val")
TBLPROPERTIES("hbase.table.name" = "xyz3", "hbase.mapred.output.outputtable" = "xyz3");

创建之后HBase不存在这张表,这张表是在HIVE中的。
用普通的创建外部表的方式,创建出来的外部表是没有数据的,因为你的HIVE中的数据存放在HBase中而不是在HIVE中。

内部表 与外部表的区别?

内部表: 删除表 对应的数据文件会被删除
外部表: 删除表 对应的数据文件不会被删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值