Hive整合Hbase
hive 和 hbase 对比
Hive
-
数据仓库:
Hive 的本质其实相当于将 HDFS 中已经存储的文件在 Mysql 中做了一个双射的关系,以方便使用 HQL 去管理查询。
-
用于数据分析、清洗
Hive 适用于离线的数据分析和清洗,延迟较高。
-
基于 HDFS、MaoRedce
Hive 存储的数据依旧在 DataNode 上,编写的 HQL 语句转换为 MapReduce 代码执行。
HBase
- 数据库
是一种面向列存储的非关系型数据库。
- 用于存储结构化和非结构化的数据
适用于单表非关系型数据库的数据
- 基于 HDFS
适用于单表非关系型数据库的数据,不适合做关联查询,类似 JOIN 等操作。
- 延迟较低,接入在线业务使用
面对大量的企业数据,Hbase 可以直接单表大量数据的存储,同时提供了高效的数据访问速度。
应用场景及编译安装
- Hbase 作为 Hive 的数据源
- 构建低延时的数据仓库
-
重新编译 hive 的jar包,使其兼容hbase。
Hbase 与 Hive 的集成在最新的两个版本中无法兼容。所以,我们只能重新编译:hive-hbase-handler-1.2.2.jar ,并把编译好的 jar 包放到 hive 的 lib 目录下。
- 解压 Hive 源码
- 进入 Hive 源码,准备把 hbase-handler 模块引入 Eclipse 项目中
- 创建 Java项目
- 创建 lib 文件夹
- 把 Hive 和 Hbase 安装包 lib 目录下的所有 jar 包,复制到 java 项目的lib目录下。
- 把lib包下的所有jar包Build Path,添加到类路径。
- 打包项目,开始重新编译
- 替换hive/lib目录下的hive-hbase-handler-1.2.1.jar
-
hive和hbase 结合使用
环境准备- 将编译好的 hive-hbase-handler-1.2.2.jar 放到 hive 的 lib 目录下
- 将 HBASE 的 jar 包映射到 hive 的lib 下,在 hive-env.sh 文件中添加
export HIVE_CLASSPATH=$HIVE_CLASSPATH:/opt/software/hbase-1.2.1/lib/*
- 在 hive-site.xml 中修改 zookeeper 的属性:
<property> <name>hbase.zookeeper.quorum</name> <value>node2,node3,node4</value> </property> <property> <name>hive.zookeeper.quorum</name> <value>node2,node3,node4</value> </property> <property> <name>hive.zookeeper.client.port</name> <value>2181</value> </property>
-
hive 表映射到 hbase 表中
- 创建映射 hbase 的表
create table hive_test(
id string,
name string,
age int,
address string
)STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’
WITH SERDEPROPERTIES (“hbase.columns.mapping” = “:key,f1:name,f2:age,f3:address”)
TBLPROPERTIES (“hbase.table.name” = “hbaseFromhive”);
````
注意:在 hive1.2.1 跟 hbase 0.98 整合时,需要添加:“hbase.mapred.output.outputtable” = “hbaseFromhive” 表属性TBLPROPERTIES(“hbase.table.name”,“hbaseFromhive”,“hbase.mapred.output.outputtable”=“hbaseFromhive”);如果不添加会报错:Must specify table name
-
进入hbase shell查看 hbase 映射表是否产生
list -
查看 hbase 映射表的结构和数据
desc ‘tableName’ -
Hive 表加载数据
数据来源于另一张表:insert overwrite table hive_test select * from hive_source;
- 查看hive 和hbase 中表的数据
映射表可以查看到 hive 表中的数据。
- 查看hive 和hbase 中表的数据
- 创建映射 hbase 的表
仅供参考
来源:https://blog.csdn.net/youAreRidiculous/article/details/100089456