HBase 与Hive数据交互整合过程详解

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中。

第一: 首先启动hive.进入交互式界面,然后创建表。

hive版本: apache-hive-1.2.1

hbase版本:apache-hbase-1.1.2

hadoop版本: hadoop-2.7.3

第一: 创建hbase能识别的表。

建表语句:

create table if not exists hive_hbase(

id int,

name String,

age int,

sex String,

address 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 ("hbase.table.name" = "ns2:hive_hbase01");

注意: 此处的 org.apache.hadoop.hive.hbase.HBaseStorageHandler 类是hive的lib包下的,需要替换成.hive-1.2.1版本的jar包。否则会报错提示找不到这个类。

错误提示:FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)V

也不能hive版本过高。比如2.x版本会报错

Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

要确保hive目录的lib目录下有mysql-connector的数据库包。否则也会报错。

创建后可以在hbase中查看一下表。list

第二:

自己准备测试数据。此处省略

create table  test(

id  int,

name string)

row format delimited fields terminated by ‘,‘

lines terminated by ‘\n‘

stored as textfile;

加载数据到表中:

load data local inpath ‘/usr/local/test01.txt‘ overwrite into table test;

通过结果集的方式插入数据到表中

insert overwrite table hive_hbase select * from test;

此处会跑mapreduce程序。过程省略。

第三: 在hbase中查询插入的 数据

select *  from hive_hbase;

20170616,zhangshaoqi,22,nan,jincheng

20170617,xuqianya,29,nv,beijing

20170618,xiaolin,29,nv,jincheng

20170619,xiaopan,33,nan,guizhou

20170620,xiaohu,26,nan,shouzhou

1 row(s) in 3.19 seconds
第四:在hbase中扫描这个表,查看是否有数据

scan ‘ns2:hive_hbase01‘

第五: hive访问已经存在的hbase

需要使用external 类型的外部表,否则会报错

REATE EXTERNAL TABLE hbase_table_3(key int, value string)    
STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler‘  
WITH SERDEPROPERTIES ("hbase.columns.mapping" = "info:name")   
TBLPROPERTIES("hbase.table.name" = "student"); 
hive> CREATE EXTERNAL TABLE hbase_table_3(key int, value string)    
    > STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler‘  
    > WITH SERDEPROPERTIES ("hbase.columns.mapping" = "info:name")   
    > TBLPROPERTIES("hbase.table.name" = "student"); 
OK
Time taken: 1.21 seconds

注意:如果hbase中列簇名name数据变更,那么hive中查询结果也会相应的变更,如果hbase中不是其他列簇
    内容更新则hive中查询结果不显示

就这些了,有问题欢迎讨论

时间: 2024-08-25 06:44:06

HBase 与Hive数据交互整合过程详解的相关文章

sk_buff封装和解封装网络数据包的过程详解

可以说sk_buff结构体是Linux网络协议栈的核心中的核心,几乎所有的操作都是围绕sk_buff这个结构体进行的,它的重要性和BSD的mbuf类似(看过<TCP/IP详解 卷2>的都知道),那么sk_buff是什么呢?       sk_buff就是网络数据包本身以及针对它的操作元数据.       想要理解sk_buff,最简单的方式就是凭着自己对网络协议栈的理解封装一个直到以太层的数据帧并且成功发送出去,个人认为这比看代码/看文档或者在网上搜资料强多了.当然,网上已经有了大量的这方面的

sk_buff封装和解封装网络数据包的过程详解(转载)

http://dog250.blog.51cto.com/2466061/1612791 可以说sk_buff结构体是Linux网络协议栈的核心中的核心,几乎所有的操作都是围绕sk_buff这个结构体进行的,它的重要性和BSD的mbuf类似(看过<TCP/IP详解 卷2>的都知道),那么sk_buff是什么呢?       sk_buff就是网络数据包本身以及针对它的操作元数据.       想要理解sk_buff,最简单的方式就是凭着自己对网络协议栈的理解封装一个直到以太层的数据帧并且成功发

PHP Socket 编程过程详解

PHP Socket 编程过程详解 Socket用于进程间通信.进程间通信通常基于客户端—服务端模型.此时,客户端—服务端是可以彼此交互的应用程序.客户端和服务端之间的交互需要连接.Socket编程负责的就是为应用程序之间建立可进行交互的连接. 在本文中,我们将学习如何用PHP创建一个简单的客户端—服务端.我们还将学习如何客户端应用程序如何发送消息到服务端,以及如何从服务端接受消息. 使用代码 目的:开发一个客户端用于发送string消息到服务端,服务端将相同的信息反转后返回给客户端. PHP服

解析activity之间数据传递方法的详解

转自:http://www.jb51.net/article/37227.htm 本篇文章是对activity之间数据传递的方法进行了详细的分析介绍,需要的朋友参考下 1  基于消息的通信机制 Intent--------boudle,extra用这种简单的形式,一般而言传递一些简单的类型是比较容易的,如int.string等详细介绍下Intent机制Intent包含两部分:1 目的[action]-------要去到哪里去2 内容[category.data]----------路上带些什么,

ORACLE EXPDP IMPDP数据导入导出命令详解及同EXP IMP命令详细对比

ORACLE EXPDP IMPDP数据导入导出命令详解及同EXP IMP 命令详细对比 一.EXPDP IMPDP EXP IMP 可以实现 1.可以实现逻辑备份和逻辑恢复 2.可以在数据库用户之间移动对象 3.可以在数据库之间移动对象 4.可以实现表空间转移 二.EXPDP的命令详解 C:\Users\Administrator>20:42:32.90>expdp help=y Export: Release 11.2.0.1.0 - Production on 星期六 10月 10 09

Portlet 通信过程详解

Portlet 通信过程详解 在 Portal 的开发过程中,Theme 与 portlet 之间的通信,以及 portlet 之间的通信是开发人员常常遇到的问题.通常 Portlet 之间需要能够互相通信,即一个 portlet 的状态发生改变,要通知其他的 portlet,这些收到通知的 Portlet 状态也要做相应的改变.根据 JSR 168 规范,Portlet 由容器管理,它们之间是相互独立的,并不共享 Session 对象.那么如何在 Portlet 之间传递参数呢?在本文中,将根

加密 解密过程详解及openssl自建CA &nbsp;

            加密 解密过程详解及openssl自建CA 为了数据信息能够安全的传输要求数据要有一定的安全性那么数据的安全性包含哪些方面的特性呢?    NIST(美国信息安全署)做了如下的定义:    保密性:       1,数据的保密性 指的是数据或隐私不向非授权者泄漏                   2,隐私性  信息不被随意的收集    完整性:       1,数据的的完整性:信息或程序只能被指定或授权的方式改变不能被随意的             修改        

LAMP架构搭建以及基于LAMP架构的主流论坛和博客搭建过程详解

了解网站架构的朋友都知道,现在很多网站的架构都是采用LAMP(Linux+Apache+Mysql/Mariadb+Php)的,至于LAMP架构本身我们就不做过于深入的探讨了,今天我给大家分享的是关于如何搭建LAMP构架,以及如何基于lamp架构去搭建目前国内比较流行的两大开源论坛(phpwind.discuz)一大开源博客(wordpress),通过这个过程也就能让大家明白我们经常上的论坛以及博客,包括包括我们访问的各个网站到底是如何工作起来的. 注意:为了方便给大家展示实验效果,我们就直接关

Hadoop MapReduce执行过程详解(带hadoop例子)

https://my.oschina.net/itblog/blog/275294 摘要: 本文通过一个例子,详细介绍Hadoop 的 MapReduce过程. 分析MapReduce执行过程 MapReduce运行的时候,会通过Mapper运行的任务读取HDFS中的数据文件,然后调用自己的方法,处理数据,最后输出.Reducer任务会接收Mapper任务输出的数据,作为自己的输入数据,调用自己的方法,最后输出到HDFS的文件中.整个流程如图: Mapper任务的执行过程详解 每个Mapper任