Hive整合HBase后的好处:

通过Hive把数据加载到HBase中,数据源可以是文件也可以是Hive中的表。

通过整合,让HBase支持JOIN、GROUP等SQL查询语法。

通过整合,不仅可完成HBase的数据实时查询,也可以使用Hive查询HBase中的数据完成复杂的数据分析。

配置

因为Hive与HBase整合的实现是利用两者本身对外的API接口互相通信来完成的,其具体工作交由Hive的lib目录中的hive-hbase-handler-.jar工具类来实现。所以只需要将hive的 hive-hbase-handler-.jar 复制到hbase/lib中就可以了。

[root@host lib]# cp hive-hbase-handler-2.1.1.jar $HBASE_HOME/lib

测试

通过hive创建hbase表

hive> CREATE TABLE t_name (id INT, NAME string)
    >      stored BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    >     WITH serdeproperties (
    >     "hbase.columns.mapping" = ":key,st1:name")
    >    tblproperties ("hbase.table.name" = "t_name","hbase.mapred.output.outputtable" = "t_name");
OK
Time taken: 1.625 seconds

在hive中查看:

hive> show tables;
OK
cust_copy
t_name
Time taken: 0.127 seconds, Fetched: 2 row(s)

hive> show create table t_name;
OK
CREATE TABLE `t_name`(
  `id` int COMMENT '',
  `name` string COMMENT '')
ROW FORMAT SERDE
  'org.apache.hadoop.hive.hbase.HBaseSerDe'
STORED BY
  'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES (
  'hbase.columns.mapping'=':key,st1:name',
  'serialization.format'='1')
TBLPROPERTIES (
  'COLUMN_STATS_ACCURATE'='{\"BASIC_STATS\":\"true\"}',
  'hbase.mapred.output.outputtable'='t_name',
  'hbase.table.name'='t_name',
  'numFiles'='0',
  'numRows'='0',
  'rawDataSize'='0',
  'totalSize'='0',
  'transient_lastDdlTime'='1526546542')
Time taken: 0.308 seconds, Fetched: 19 row(s)

在HBASE中查看

hbase(main):004:0> list 't_name'
TABLE                                                                                                                                        
t_name                                                                                                                                       
1 row(s)
Took 0.0092 seconds                                                                                                                          
=> ["t_name"]

在hbase插入数据并查看数据:

hbase(main):006:0> put 't_name','1','st1:name','xiaoma'
Took 0.3709 seconds                                                                                                                          
hbase(main):007:0> put 't_name','2','st1:name','xiaozhang'
Took 0.0038 seconds                                                                                                                          
hbase(main):008:0> put 't_name','3','st1:name','tianyongtao'
Took 0.0051 seconds

hbase(main):009:0> scan 't_name'
ROW                                  COLUMN+CELL                                                                                             
 1                                   column=st1:name, timestamp=1526547097913, value=xiaoma                                                  
 2                                   column=st1:name, timestamp=1526547115702, value=xiaozhang                                               
 3                                   column=st1:name, timestamp=1526547130241, value=tianyongtao                                             
3 row(s)
Took 0.0327 seconds

通过hive查询:

hive> select * from t_name;
OK
t_name.id       t_name.name
1       xiaoma
2       xiaozhang
3       tianyongtao
Time taken: 0.414 seconds, Fetched: 3 row(s)
hive> select * from t_name where id=1;
OK
t_name.id       t_name.name
1       xiaoma
Time taken: 1.246 seconds, Fetched: 1 row(s)
hive> select * from t_name where id>1;
OK
t_name.id       t_name.name
2       xiaozhang
3       tianyongtao
Time taken: 0.383 seconds, Fetched: 2 row(s)

删除表测试:

hive> drop table t_name;
OK
Time taken: 1.851 seconds

经查hbase中的t_name表被同步删除了

多列族

hive> CREATE TABLE t_role (id INT, NAME string,sex int,platid int)
    >      stored BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    >     WITH serdeproperties (
    >     "hbase.columns.mapping" = ":key,info:NAME,info:sex,plat:platid")
    >    tblproperties ("hbase.table.name" = "t_role","hbase.mapred.output.outputtable" = "t_role");
OK
Time taken: 3.179 seconds

hbase(main):039:0> scan 't_role'
ROW                                           COLUMN+CELL                                                                                                                       
 1                                            column=info:name, timestamp=1526549089030, value=feige                                                                            
 1                                            column=info:sex, timestamp=1526549206235, value=0                                                                                 
 1                                            column=plat:platid, timestamp=1526549241774, value=785                                                                            
1 row(s)
Took 0.0287 seconds

hive> select * from t_role;
OK
t_role.id       t_role.name     t_role.sex      t_role.platid
1       NULL    0       785
Time taken: 0.417 seconds, Fetched: 1 row(s)

发现name字段为空

hbase(main):040:0> put 't_role','1','info:NAME','feige'
Took 0.0033 seconds

hive> select * from t_role;
OK
t_role.id       t_role.name     t_role.sex      t_role.platid
1       feige   0       785
Time taken: 0.422 seconds, Fetched: 1 row(s)

发现name字段被填充因此要注意字段的大小写

-----------------------

spark访问hive-hbase表,需要制定jars包如下:

spark-shell --master local-cluster[3,2,1024] --num-executors 3 --executor-memory 1g --jars /root/hive/apache-hive-2.1.1/lib/hive-hbase-handler-2.1.1.jar

hive整合hbase的更多相关文章

  1. 大数据学习系列之五 ----- Hive整合HBase图文详解

    引言 在上一篇 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机) 和之前的大数据学习系列之二 ----- HBase环境搭建(单机) 中成功搭建了Hive和HBase的环 ...

  2. 四 Hive整合HBase

    安装环境: hbase版本:hbase-1.4.0-bin.tar.gz hive版本:   apache-hive-1.2.1-bin.tar 注意请使用高一点的hbase版本,不然就算hive和h ...

  3. 创建hive整合hbase的表总结

    [Author]: kwu 创建hive整合hbase的表总结.例如以下两种方式: 1.创建hive表的同步创建hbase的表 CREATE TABLE stage.hbase_news_compan ...

  4. Hive 整合Hbase

    摘要 Hive提供了与HBase的集成,使得能够在HBase表上使用HQL语句进行查询 插入操作以及进行Join和Union等复杂查询.同时也可以将hive表中的数据映射到Hbase中.     应用 ...

  5. 大数据学习系列之九---- Hive整合Spark和HBase以及相关测试

    前言 在之前的大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 中介绍了集群的环境搭建,但是在使用hive进行数据查询的时候会非常的慢,因为h ...

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

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

  7. Hive综合HBase——经Hive阅读/书写 HBase桌子

    社论: 本文将Hive与HBase整合在一起,使Hive能够读取HBase中的数据,让Hadoop生态系统中最为经常使用的两大框架互相结合.相得益彰. watermark/2/text/aHR0cDo ...

  8. 二十、Hadoop学记笔记————Hive On Hbase

    Hive架构图: 一般用户接口采用命令行操作, hive与hbase整合之后架构图: 使用场景 场景一:通过insert语句,将文件或者table中的内容加入到hive中,由于hive和hbase已经 ...

  9. hive_学习_02_hive整合hbase(失败)

    一.前言 本文承接上一篇:hive_学习_01_hive环境搭建(单机) ,主要是记录 hive 整合hbase的流程 二.环境准备 1.环境准备 操作系统 : linux CentOS 6.8 jd ...

随机推荐

  1. C# 处理DateTime算法,取某月第1天及最后一天

    代码如下所示: /// <summary> /// 取得某月的第一天 /// </summary> /// <param name="datetime" ...

  2. 【BZOJ3110】【Zjoi2013】K大数查询 - 2

    之前用权值线段树套区间线段树水过,现在再练习一下整体二分 原题:有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b ...

  3. vue-cli、webpack提取第三方库-----DllPlugin、DllReferencePlugin

    需要安装的插件有 extract-text-webpack-plugin assets-webpack-plugin clean-webpack-plugin npm install extract- ...

  4. Spring Boot 整合 FastDFS 客户端

    原文地址:Spring Boot 整合 FastDFS 客户端 博客地址:http://www.extlight.com 一.前言 前两篇介绍整体上介绍了通过 Nginx 和 FastDFS 的整合来 ...

  5. Zigbee 的 mesh功能设置

    1. 在编译选项中加入ZIGBEEPRO 最大的节点深度为20,网络模式为mesh网络 如果不配置,则为HOME_CONTROLS,支持5级路由深度,每个路由器最多可连接20个节点(最多包括6个路由器 ...

  6. Extjs Column布局常见问题及解决方法

    原文地址:http://blog.csdn.net/weoln/article/details/4339533 第一次用Extjs的column布局时遇见了很多问题,记录下来,供大家参考.column ...

  7. 2017头条笔试题:二维点集中找出右上角没有点的点并按x坐标从小到大打印坐标

    PS:这篇是之前本来就想发的但是一直没时间写,加上今天做了京东的题,结果代码名就命名为jingdong了……懒得改代码名重新跑一遍结果了=.= 暴力法去做就是遍历每个点,判断它是不是“最大点”.判断过 ...

  8. 【FusionCharts学习-3】显示中国地图

    概述 使用FusionCharts显示中国地图 资源获取 地图下载地址:http://www.fusioncharts.com/download/maps/definition/   将下载的地图拷贝 ...

  9. maven学习(1)-简介与安装

    一.Maven 简介 Maven 官网:http://maven.apache.org/ 二.Maven 安装与配置 Maven 下载:http://maven.apache.org/download ...

  10. 小峰mybatis(4)mybatis使用注解配置sql映射器

    主流开发还是使用xml来配置:使用注解配置比较快,但是不支持所有功能:有些功能还是得用配置文件: 一.基本映射语句: @Inert @Update @Delete @Select 二.结果集映射语句 ...