hive整合hbase
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的更多相关文章
- 大数据学习系列之五 ----- Hive整合HBase图文详解
引言 在上一篇 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机) 和之前的大数据学习系列之二 ----- HBase环境搭建(单机) 中成功搭建了Hive和HBase的环 ...
- 四 Hive整合HBase
安装环境: hbase版本:hbase-1.4.0-bin.tar.gz hive版本: apache-hive-1.2.1-bin.tar 注意请使用高一点的hbase版本,不然就算hive和h ...
- 创建hive整合hbase的表总结
[Author]: kwu 创建hive整合hbase的表总结.例如以下两种方式: 1.创建hive表的同步创建hbase的表 CREATE TABLE stage.hbase_news_compan ...
- Hive 整合Hbase
摘要 Hive提供了与HBase的集成,使得能够在HBase表上使用HQL语句进行查询 插入操作以及进行Join和Union等复杂查询.同时也可以将hive表中的数据映射到Hbase中. 应用 ...
- 大数据学习系列之九---- Hive整合Spark和HBase以及相关测试
前言 在之前的大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 中介绍了集群的环境搭建,但是在使用hive进行数据查询的时候会非常的慢,因为h ...
- Hive篇---Hive与Hbase整合
一.前述 Hive会经常和Hbase结合使用,把Hbase作为Hive的存储路径,所以Hive整合Hbase尤其重要. 二.具体步骤 hive和hbase同步https://cwiki.apache ...
- Hive综合HBase——经Hive阅读/书写 HBase桌子
社论: 本文将Hive与HBase整合在一起,使Hive能够读取HBase中的数据,让Hadoop生态系统中最为经常使用的两大框架互相结合.相得益彰. watermark/2/text/aHR0cDo ...
- 二十、Hadoop学记笔记————Hive On Hbase
Hive架构图: 一般用户接口采用命令行操作, hive与hbase整合之后架构图: 使用场景 场景一:通过insert语句,将文件或者table中的内容加入到hive中,由于hive和hbase已经 ...
- hive_学习_02_hive整合hbase(失败)
一.前言 本文承接上一篇:hive_学习_01_hive环境搭建(单机) ,主要是记录 hive 整合hbase的流程 二.环境准备 1.环境准备 操作系统 : linux CentOS 6.8 jd ...
随机推荐
- 51Nod:独木舟问题(贪心)
n个人,已知每个人体重,独木舟承重固定,每只独木舟最多坐两个人,可以坐一个人或者两个人.显然要求总重量不超过独木舟承重,假设每个人体重也不超过独木舟承重,问最少需要几只独木舟? 输入 第一行包含两个正 ...
- (2)流程控制(for循环、if...else判断、while循环)
for循环 for item in names: #结构语法 print(item) for循环嵌套for循环 for循环配合range()可以直接指定要打印的数量 例:打印一个金字塔 for i ...
- 差分约束+spfa【模板】
相比dij,spfa优点是可处理含负边不含负圈的最短路问题,缺点是算法复杂度不太好[貌似可以使用两种优化.LLL和SLF] 差分约束就是将一些不等式转化为图中的带权边,然后求解最短路或最长路的方法 洛 ...
- Python & 机器学习入门指导
Getting started with Python & Machine Learning(阅者注:这是一篇关于机器学习的指导入门,作者大致描述了用Python来开始机器学习的优劣,以及如果 ...
- $.grep()的用法
grep()方法用于数组元素过滤筛选 grep(array,callback,invert) array:待过滤数组; callback:处理数组中的每个元素,并过滤元素,该函数中包含两个参数,第一个 ...
- 一个不错的nomad raw_exec && docker 运行例子(集成访问网关)
github 上有一个关于nomad up && runing 不错的项目,包含了一个tomcat 应用的部署,以及基于容器运行的网关服务 项目参考地址 https://github. ...
- 获取js 文件传递的参数并使用json2进行json数据转换
主要的技术就不用详细进行介绍了,就是使用js文件进行参数的传递,用途有一下几个: 1,进行js的版本控制. 2,获取参数并,进行一些额外功能的添加(比如使用js 进行用户验证,设计开发API (一些开 ...
- 使用 ASMCMD 工具管理ASM目录及文件
============================== -- 使用ASMCMD 工具管理ASM目录及文件 --============================== 在ASM实例中,所有的 ...
- 淘宝 code 使用
淘宝 code上 svn 使用,基本流程: 新建项目 mkdir 创建 branches 文件夹(新建项目的时候,只有 trunk) copy 来创建新分支 checkout 主干和(或)分支到本地 ...
- URL中的hash(井号)
1.#的含义 #代表网页中的一个位置,其右边的字符,就是该位置的标识符.比如 http://www.example.com/index.html#print 就是代表index.html中的print ...