文章目录
一、前言
HBase 只提供了简单的基于 Key 值的快速查询能力,没法进行大量的条件查询,对于数据分析来说,不太友好。
hive 整合 hbase 为用户提供一种 sqlOnHbase 的方法。Hive 与 HBase 整合的实现是利用两者本身对外的 API 接口互相通信来完成的,其具体工作交由 Hive 的 lib 目录中的 hive-hbase-handler-xxx.jar 工具类来实现对 HBase 数据的读取。
-
Hive 和 HBase 通过接口互通,用户可以方便地通过 SQL 接口进行建表、映射表、查询、删除等操作。 使用 Hive 操作 HBase 中的表,只是提供了便捷性,由于对于 hiveOnHbase 表的查询走 MR 框架,因此查询效率较为缓慢需酌情使用。
-
Hive 集成 HBase 可以有效利用 HBase 数据库的存储特性,如行更新和列索引等。在集成的过程中注意维持 HBase jar 包的一致性。Hive 集成 HBase 需要在 Hive 表和 HBase 表之间建立映射关系,也就是 Hive 表的列 (columns) 和列类型(column types)与 HBase 表的列族(column families)及列限定词(column qualifiers)建立关联。
每一个在 Hive 表中的域都存在于 HBase 中,而在 Hive 表中不需要包含所有HBase 中的列。HBase 中的 RowKey 对应到 Hive 中为选择一个域使用 :key 来对应,列族(cf:)映射到 Hive 中的其它所有域,列为(cf:cq)。
二、适用场景
- 实现将批量数据导入到 HBase 表中。
- 通过 Hive 与 HBase 整合,可以将 HBase 的数据通过 Hive 来分析,让 HBase 支持 JOIN、GROUP 等 SQL 查询语法。
- 构建低延时的数据仓库
三、依赖条件
- 已有 HDFS、MapReduce、Hive、Zookeeper、HBase 环境。
- 确保 Hive 的 lib 目录下有 hive-hbase-handler-xxx.jar、Zookeeper jar、HBase Server jar、HBase Client jar 包。
四、具体使用
4.1、Hive 表映射到 Hbase 中
create table hive_people
(
id int,
name string,
age string,
sex string,
edu string