实现目标

  1. Hive可以实时查询Hbase中的数据.
  2. hive中的表插入数据会同步更新到hbase对应的表中.
  3. 可以将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_AC01jinan_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整合过程的更多相关文章

  1. Hive(五):hive与hbase整合

    配置 hive 与 hbase 整合的目的是利用 HQL 语法实现对 hbase 数据库的增删改查操作,基本原理就是利用两者本身对外的API接口互相进行通信,两者通信主要是依靠hive_hbase-h ...

  2. Hadoop Hive与Hbase整合+thrift

    Hadoop Hive与Hbase整合+thrift 1.  简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句 ...

  3. 大数据工具篇之Hive与HBase整合完整教程

    大数据工具篇之Hive与HBase整合完整教程 一.引言 最近的一次培训,用户特意提到Hadoop环境下HDFS中存储的文件如何才能导入到HBase,关于这部分基于HBase Java API的写入方 ...

  4. Hive与Hbase整合

    Hive与Hbase整合 1.文档 Hive HBase Integration 2.拷贝jar文件 2.1.把Hbase的lib目录下面的jar文件全部拷贝到Hive的lib目录下面 cd /hom ...

  5. Hive和Hbase整合

    Hive只支持insert和delete操作,并不支持update操作,所以无法实施更新hive里的数据,而HBASE正好弥补了这一点,所以在某些场景下需要将hive和hbase整合起来一起使用. 整 ...

  6. Hive和HBase整合用户指南

    本文讲解的Hive和HBase整合意思是使用Hive读取Hbase中的数据.我们可以使用HQL语句在HBase表上进行查询.插入操作:甚至是进行Join和Union等复杂查询.此功能是从Hive 0. ...

  7. hive和hbase整合的原因和原理

    为什么要进行hive和hbase的整合? hive是高延迟.结构化和面向分析的: hbase是低延迟.非结构化和面向编程的. Hive集成Hbase就是为了使用hbase的一些特性.或者说是中和它们的 ...

  8. Hive篇---Hive与Hbase整合

     一.前述 Hive会经常和Hbase结合使用,把Hbase作为Hive的存储路径,所以Hive整合Hbase尤其重要. 二.具体步骤 hive和hbase同步https://cwiki.apache ...

  9. hive存储处理器(StorageHandlers)以及hive与hbase整合

    此篇文章基于hive官方英文文档翻译,有些不好理解的地方加入了我个人的理解,官方的英文地址为: 1.https://cwiki.apache.org/confluence/display/Hive/S ...

随机推荐

  1. 【.net部署】Server Error in '/' Application.错误解决方案

    报错: Server Error in '/' Application.---------------------------------------------------------------- ...

  2. ionic 打包签名

    IONIC用一下命令打包会自动签名并且打包 ionic build android 自己签名并且打包方法: 1>在你项目app\platforms\android目录下新建文件:debug-si ...

  3. CSS外边距margin上下元素重叠

    CSS外边距margin上下元素重叠 转载:http://www.gaoyouyou.com/view/77.htm 两个或多个块级盒子的垂直相邻边界会重合.结果的边界宽度是相邻边界宽度中最大的值.如 ...

  4. linux 关机要点

    主要围绕 sync shutdown reboot这几个指令 将数据同步写入硬盘中的挃令: sync:关机前要保存进硬盘.事实上sync也可以被一般账号使用喔!只丌过一般账号用户所更新的硬盘数据就仅有 ...

  5. Mysql使用mysqldump按时间导出时的一个注意事项

    在使用Mysql的mysqldump命令按时间进行数据导出时,我们可能会遇到导出数据与原库中不符或者导出数据和我们期望的数据不同的情况. 我们知道Mysql数据库导出可以使用命令mysqldump,使 ...

  6. webStorm 多个项目并存

    点击file ->settings ->Directories 然后右侧有个Add Content Root 添加某个Root即可看见该root下的所有项目

  7. html画布

    一.<canvas>标签 Html5 引入了一个新的<canvas> 标签,这个标签所代表的区域就好象一块画布,你的所有图形绘制最后都要在这块画布上呈现.有了这个标签,浏览器的 ...

  8. ✡ leetcode 170. Two Sum III - Data structure design 设计two sum模式 --------- java

    Design and implement a TwoSum class. It should support the following operations: add and find. add - ...

  9. 移动端bug~~移动端:active伪类无效的解决方法【移动端 :active样式无效】

    移动端:active伪类无效的解决方法[移动端 :active样式无效]2016-09-26  15:46:50 问题: 移动端开发的时候实现按钮的点击样式变化,但是在iphone[safiri Mo ...

  10. STM32学习笔记——点亮LED

    STM32学习笔记——点亮LED 本人学习STM32是直接通过操作stm32的寄存器,使用的开发板是野火ISO-V2版本: 先简单的介绍一下stm32的GPIO: stm32的GPIO有多种模式: 1 ...