hive与hbase整合过程
实现目标
- Hive可以实时查询Hbase中的数据.
- hive中的表插入数据会同步更新到hbase对应的表中.
- 可以将hbase中不同的表中的列通过 left 或 inner join 方式映射到hive 中的一个视图中.
Hive map hbase
1,启动hive hbase
在hive hbase服务启动的情况下, $HIVE_HOME/bin/hive --auxpath $HIVE_HOME/lib/hive-hbase-handler-1.1.0-cdh5.7.1.jar,$HIVE_HOME/lib/hbase-common-1.2.0-cdh5.7.1.jar,$HIVE_HOME/lib/zookeeper-3.4.5-cdh5.7.1.jar,$HIVE_HOME/lib/guava-14.0.1.jar --hiveconfhbase.master=dwrj5123:60000 (可能不需要这个过程) .
2, 查询hbase中表的结构
(1)查询jinan:SI3U_AC06_TEMP
describe 'jinan:SI3U_AC06_TEMP'
Table jinan:SI3U_AC06_TEMP is ENABLED
jinan:SI3U_AC06_TEMP
COLUMN FAMILIES DESCRIPTION
{NAME => 'AC06_TEMP', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => '
FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
1 row(s) in 0.1960 seconds
其中jinan:SI3U_AC06_TEMP为表名, 列族为AC06_TEMP,通过查询表中的数据得知有不限于以下列:
AC06_TEMP:AAC001,
AC06_TEMP:AAE140,
AC06_TEMP:AAE149,
AC06_TEMP:BAA044,
AC06_TEMP:BAA035,
AC06_TEMP:BAA036,
AC06_TEMP:AAE034
(2) 查询jinan:SI3U_AC01
hbase(main):003:0> describe 'jinan:SI3U_AC01'
Table jinan:SI3U_AC01 is ENABLED
jinan:SI3U_AC01
COLUMN FAMILIES DESCRIPTION
{NAME => 'AC01', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE'
MPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE =>
1 row(s) in 0.1850 seconds
表jinan:SI3U_AC01 通过查询表中的数据得到不限于以下列:
AC01:AAC001,
AC01:AAC003,
AC01:AAA109
3, 创建hive 表到hbase映射
(1) 创建hive 表jinan_SI3U_AC01 到hbase 表"jinan:SI3U_AC01的映射:
解释: jinan_SI3U_AC01为hive 中表名, jinan:SI3U_AC01为需要映射的hbase表名.
":key,AC01:AAC001,AC01:AAC003,AC01:AAA109": 为需要映射的列, AC01为列族,多列以逗号隔开.
(2) 创建hive 表jinan_SI3U_AC06_TEMP 到hbase表jinan:SI3U_AC06_TEMP的映射:
CREATE EXTERNAL TABLE jinan_SI3U_AC06_TEMP(key string,AAC001 string,AAE140 string,AAE149 string,BAA044 string,BAA035 decimal(19,4),BAA036 decimal(19,4),AAE034 TIMESTAMP )
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,AC06_TEMP:AAC001,AC06_TEMP:AAE140,AC06_TEMP:AAE149,AC06_TEMP:BAA044,AC06_TEMP:BAA035,AC06_TEMP:BAA036,AC06_TEMP:AAE034") TBLPROPERTIES ("hbase.table.name" = "jinan:SI3U_AC06_TEMP");
Hive创建视图
hive 中可以通过创建视图的方式将多个表的数据整合成一个视图,方便查询和使用. 这里以上面映射的jinan_SI3U_AC01和jinan_SI3U_AC06_TEMP两个表为例.
create view fact_view (AAC001,AAC003,AAA109,AAE140,AAE149,BAA044,BAA035,BAA036, AAE034 ) as SELECT a.AAC001, a.AAC003,a.AAA109, b.AAE140,b.AAE149, b.BAA044,b.BAA035, b.BAA036,b.AAE034 FROM jinan_SI3U_AC01 a RIGHT JOIN jinan_SI3U_AC06_TEMP b ON a.aac001 =b.aac001;
|
表名 |
列名 |
视图名 |
|
|
jinan_SI3U_AC01 |
AAC001 AAC003 AAA109 |
fact_view |
|
|
jinan_SI3U_AC06_TEMP |
AAE140 AAE149 BAA044 BAA035 BAA036 AAE034 |
通过SELECT * FROM fact_view; 可以查询到有效数据.
KYLIN hive 视图的使用
kylin 支持hive 视图构建立方体, 过程与使用hive 表相同. 构建立方体完成之后,执行查询,
SELECT SUM(BAA035) FROM FACT_VIEW left inner join DATE_VIEW ON FACT_VIEW.aae034=DATE_VIEW.start_date where(DATE_VIEW.start_date>'2014-05-01' and DATE_VIEW.start_date<'2015-01-01');
总结
Hive 与hbase实现了通过一次映射, 可以实时查询hbase中的数据, 也可以从hive表中插入数据到hbase. 通过构建视图的方式可以将多个hive 表的数据整合到一个视图中, 方便数据的使用, 通过以上方式对hbase 中数据的利用不占用数据储存空间.缺点,以上过程无数据清洗过程,可能会存在数据冲突的问题.
参考
https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration
hive与hbase整合过程的更多相关文章
- Hive(五):hive与hbase整合
配置 hive 与 hbase 整合的目的是利用 HQL 语法实现对 hbase 数据库的增删改查操作,基本原理就是利用两者本身对外的API接口互相进行通信,两者通信主要是依靠hive_hbase-h ...
- Hadoop Hive与Hbase整合+thrift
Hadoop Hive与Hbase整合+thrift 1. 简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句 ...
- 大数据工具篇之Hive与HBase整合完整教程
大数据工具篇之Hive与HBase整合完整教程 一.引言 最近的一次培训,用户特意提到Hadoop环境下HDFS中存储的文件如何才能导入到HBase,关于这部分基于HBase Java API的写入方 ...
- Hive与Hbase整合
Hive与Hbase整合 1.文档 Hive HBase Integration 2.拷贝jar文件 2.1.把Hbase的lib目录下面的jar文件全部拷贝到Hive的lib目录下面 cd /hom ...
- Hive和Hbase整合
Hive只支持insert和delete操作,并不支持update操作,所以无法实施更新hive里的数据,而HBASE正好弥补了这一点,所以在某些场景下需要将hive和hbase整合起来一起使用. 整 ...
- Hive和HBase整合用户指南
本文讲解的Hive和HBase整合意思是使用Hive读取Hbase中的数据.我们可以使用HQL语句在HBase表上进行查询.插入操作:甚至是进行Join和Union等复杂查询.此功能是从Hive 0. ...
- hive和hbase整合的原因和原理
为什么要进行hive和hbase的整合? hive是高延迟.结构化和面向分析的: hbase是低延迟.非结构化和面向编程的. Hive集成Hbase就是为了使用hbase的一些特性.或者说是中和它们的 ...
- Hive篇---Hive与Hbase整合
一.前述 Hive会经常和Hbase结合使用,把Hbase作为Hive的存储路径,所以Hive整合Hbase尤其重要. 二.具体步骤 hive和hbase同步https://cwiki.apache ...
- hive存储处理器(StorageHandlers)以及hive与hbase整合
此篇文章基于hive官方英文文档翻译,有些不好理解的地方加入了我个人的理解,官方的英文地址为: 1.https://cwiki.apache.org/confluence/display/Hive/S ...
随机推荐
- DOM事件简介--摘自admin10000
Click.touch.load.drag.change.input.error.risize — 这些都是冗长的DOM(文档对象模型)事件列表的一部分.事件可以在文档(Document)结构的任何部 ...
- 如何开发H5项目 -- 入门篇
前言 H5即HTML5,H5开发具有低成本.高效率.跨平台.研发周期短,用户接触成本低等特性. 一.开发环境 在开发一个H5项目之前,需要先搞好环境.主要有node.npm.gulp.bower.下面 ...
- jquery省市联动,根据公司需求而写
//author:guan //2015-05-25 //省市联动 //实用说明,页面引用如下js //<script src="../js/jquery-1.6.3.min.js&q ...
- ios网络知识
http://www.cocoachina.com/bbs/read.php?tid-31300.html 启蒙内容 http://blog.csdn.net/nono_love_lilith/ar ...
- OpenMP编程总结表
本文对OpenMP 2.0的全部语法——Macro(宏定义).Environment Variables(环境变量).Data Types(数据类型).Compiler Directives(编译指导 ...
- shell单引号中输出参数值
因为在shell的单引号中,所有的特殊字符和变量都会变成文本,那么如果需要在字符串中输出变量值怎么办呢? 这里记录以下两种方法: 使用双引号 shell> X='parameter' shell ...
- js中的break ,continue, return (转)
面向对象编程语法中我们会碰到break ,continue, return这三个常用的关键字,那么关于这三个关键字的使用具体的操作是什么呢?我们在使用这三关键字的时候需要注意和需要理解的规则是什么呢? ...
- js switch 扩展
//demo var num=99 switch(n){ case 80<n: document.write("优秀");break; case 70<n: docum ...
- Oracle数据库导入导出命令总结
Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中.利用 ...
- rails使用bootstrap3-wysiwyg可视化编辑器并实现自定义图片上传插入功能
之前在rails开发中使用了ckeditor作为可视化编辑器,不过感觉ckeditor过于庞大,有很多不需要的功能,而且图片上传功能不好控制不同用户可以互相删除图片,感觉很不好.于是考虑更改可视化编辑 ...