如何创建一个与hbase共享数据的hive表
set hbase.zookeeper.quorum=hadoop01:2181,hadoop02:2181,hadoop03:2181;
set zookeeper.znode.parent=/hbase;
//hive 创建表
CREATE EXTERNAL TABLE hbase.hbase_hive02 (
rowkey string,
family1 map<STRING,STRING>
)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,family1:")
TBLPROPERTIES ("hbase.table.name" = "hadoop3_1:hbase_hive02");
//hbase 不需要创建表
create 'hadoop3_1:hbase_hive02', NAME => 'family1'
// 在hbase 添加数据:
...
效果 :
hive> select * from hbase_hive02;
OK
rowkey1 {"address":"北京","gender":"男","name":"你要疯"}
rowkey2 {"id":"1"}
hive> select family1['gender'] from hbase_hive02;
OK
男
NULL
hive> select family1['gender'] from hbase_hive02 where family1['gender'] is not null;
OK
男
六、Hive和Hbase整合理论
1、为什么hive要和hbase整合
2、整合的优缺点
优点:
(1).Hive方便地提供了Hive QL的接口来简化MapReduce的使用,
而HBase提供了低延迟的数据库访问。如果两者结合,可以利
用MapReduce的优势针对HBase存储的大量内容进行离线的计算和分析。
(2).操作方便,hive提供了大量系统功能
缺点:
性能的损失,hive有这样的功能, 他支持通过类似sql语句的语法来操作hbase
中的数据, 但是速度慢。
3、整合需要做什么样的准备工作
4、整合后的目标
(1). 在hive中创建的表能直接创建保存到hbase中。
(2). 往hive中的表插入数据,数据会同步更新到hbase对应的表中。
(3). hbase对应的列簇值变更,也会在Hive中对应的表中变更。
(4). 实现了多列,多列簇的转化:(示例:hive中3列对应hbase中2列簇)
5、hive和Hbase整合后如果通信?
查看hive和Hbase通信图:
主要是通过hive 的lib目录下的hive-hbase-handler-1.2.1.jar来实现hive
和Hbase通信。
二、Hive和Hbase整合案例操作
案例一:
(1). 在hive中创建的表能直接创建保存到hbase中。(Hive表多个字段)
create database hbase;
create table if not exists hbase.hive_hbase01(
eID int,
eName String,
eAge int,
eSex String,
eAddress String
)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf_info:eName,cf_info:eAge,cf_info:eSex,cf_beizhu:eAddress")
TBLPROPERTIES (&