Hive on Hbase
Hive on Hbase
- Hive on Hbase介绍
- Hive on Hbase 配置
- Hive on Hbase 实现
Hive on Hbase介绍
功能:实现Hive与Hbase集成,使用Hive SQL对Hbase的数据进行处理
原理
Hive的功能:使用HQL对表的数据进行处理
本质:通过MapReduce对HDFS中的文件进行处理
原理
TextInputFormat:读文件
TextOutputFormat:写文件
MapReduce的功能:读取数据进行分布式计算
InputFormat:输入类
- TextInputFormat:默认的输入类,用于读取文件系统
- DBInputFormat:用于读取JDBC数据库
- 实现Sqoop导入的:将MySQL数据导入到Hive或者HDFS
- TableInputFormat:用于读取Hbase数据
OutputFormat:输出类
TextOutputFormat:默认的输出类,用于将结果写入文件系统
DBOutputFormat:用于写入JDBC数据库
- 实现Sqoop导出的:将HDFS数据写入MySQL
TableOutputFormat:用于写入HBase数据库
原理:Hive可以通过MapReduce来实现映射读写Hbase表的数据
特点
优点:支持完善的SQL语句,可以实现各种复杂SQL的数据处理及计算,通过分布式计算程序实现,对大数据量的数据处理比较友好
缺点:不支持二级索引,数据量不是特别大的情况下,性能一般
应用
- 基于大数据高性能的离线读写,并且使用SQL来开发
Hive on Hbase 配置
需求
- 配置Hive与Hbase集成,实现Hive中可以读写Hbase表
分析
- step1:修改Hive配置文件,指定Hbase的Zookeeper地址
- step2:按顺序启动HDFS、ZK、Hbase、Hive
实现
全部操作在装有hive的节点配置
修改hive-site.xml:Hive通过SQL访问Hbase,就是Hbase的客户端,就要连接zookeeper
cd /export/server/hive-2.1.0-bin/ vim conf/hive-site.xml
<property><name>hive.zookeeper.quorum</name><value>node1,node2,node3</value> </property><property><name>hbase.zookeeper.quorum</name><value>node1,node2,node3</value> </property> <property><name>hive.server2.enable.doAs</name><value>false</value> </property>
修改hive-env.sh
export HBASE_HOME=/export/server/hbase-2.1.0
启动HDFS、ZK、Hbase:第一台机器
start-dfs.sh /export/server/zookeeper-3.4.6/bin/start-zk-all.sh start-hbase.sh
启动Hive和YARN:第三台机器
#启动YARN start-yarn.sh #先启动metastore服务 start-metastore.sh #然后启动hiveserver start-hiveserver2.sh #然后启动beeline start-beeline.sh
总结
- 先配置Hive的配置文件:添加Hbase的地址
- 然后按照先后顺序启动即可
Hive on Hbase 实现
需求
- 在Hive中实现对Hbase表的数据读写
分析
- step1:如果表在Hbase中没有,Hive中没有,在Hive中创建表,指定在Hbase中创建关联表
- 场景比较少
- 在Hive中建一张表,自动在Hbase中也创建一张对应的表
- step2:如果表在Hbase中有,但是Hive中没有,Hive中创建一张外部表,关联Hbase表
- 主要应用的方式
- Hbase中的表已经存在,已经有数据,构建一张Hive关联表,使用SQL进行查询
- step1:如果表在Hbase中没有,Hive中没有,在Hive中创建表,指定在Hbase中创建关联表
实现
在安装hive的机器中测试
如果Hbase中表不存在:【用的比较少】
创建测试数据文件
vim /export/data/hive-hbase.txt 1,zhangsan,80 2,lisi,60 3,wangwu,30 4,zhaoliu,70
创建测试表
--创建测试数据库 create database course; --切换数据库 use course; --创建原始数据表 create external table if not exists course.score( id int, cname string, score int ) row format delimited fields terminated by ',' stored as textfile ; --加载数据文件 load data local inpath '/export/data/hive-hbase.txt' into table score;
创建一张Hive与HBASE的映射表
create table course.hbase_score( id int, cname string, score int ) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties("hbase.columns.mapping" = "cf:name,cf:score") tblproperties("hbase.table.name" = "hbase_score");
将测试表的数据写入映射表
set hive.exec.mode.local.auto=true;insert overwrite table course.hbase_score select id,cname,score from course.score;
如果Hbase中表已存在,只能创建外部表
create external table course.t1(key string,name string,age string,addr string,phone string) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties("hbase.columns.mapping" = ":key,basic:name,basic:age,other:addr,other:phone") tblproperties("hbase.table.name" = "itcast:t1");
总结
Hive中的只是关联表,并没有数据,数据存储在Hbase表中
在Hive中创建Hbase的关联表,关联成功后,使用SQL处理关联表
如果Hbase中表不存在,默认使用Hive的第一列作为rowkey
如果Hbase中表已存在,只能建外部表,使用:key来表示rowkey
HIve中与Hbase关联的表,不能使用load加载,只能使用insert,通过MR读写数据
Hive on Hbase相关推荐
- hive删除hbase数据_Hive进阶:Hive通过外部表操作Hbase数据
概述: HBase: 查询效率比较高,常为实时业务提供服务,但是其查询方式比较单一,只能通过row方式get单条数据,或者通过scan加过滤器的方式扫描数据表获取数据. Hive: hive用来存储结 ...
- HIVE和HBASE区别
http://www.cnblogs.com/justinzhang/p/4273470.html https://www.zhihu.com/question/21677041 1. 两者分别是什么 ...
- hive与hbase整合
配置环境. hadoop 2.4 hbase 0.98.3 hive 0.13.1(源用的mysql) 配置. 分2种情况(1.hbase与hive在一台机器上,2.hbase与hive不在同一台机器 ...
- 大数据:Hive和Hbase的区别于优势
1. 前言 最近在研究大数据相关知识,Hive和Hbase是之前本科的时候调研过的两个数据仓库.现在特把这两个数据仓库拿来总结以下,这两个数据仓库各自由各自的特点,可以应用与不同的应用场景.对于大数据 ...
- 浅谈Hive和HBase区别
出处: http://www.cnblogs.com/zlslch/p/5659641.html . 两者分别是什么? Apache Hive是一个构建在Hadoop基础设施之上的数据仓库.通 ...
- Hive与Hbase结合使用
hive的启动需要使用到zookeeper, 所以, 要么自己搭建zookeeper, 要么跟其它东西一起使用, 我这里做的是跟hbase一起使用的zookeeper, 因为hbase自带zookee ...
- Hive和HBase
一.两者的定义 hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,它的本质就是将SQL语句转换为MapReduce任务进行运行. HB ...
- hive与hbase整合方式和优劣
分别安装hive 和 hbase 1.在hive中创建与hbase关联的表 create table ganji_ranks (row string,num string) STORED BY 'or ...
- hive和hbase区别和联系
作者:有点文 链接:https://www.zhihu.com/question/21677041/answer/185664626 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...
- Sqoop(三)将关系型数据库中的数据导入到HDFS(包括hive,hbase中)
本文转自:https://www.cnblogs.com/yfb918/p/10855170.html 一.说明: 将关系型数据库中的数据导入到 HDFS(包括 Hive, HBase) 中,如果导入 ...
最新文章
- 处方上电脑 北大口腔医嘱一清二楚
- vue项目适应不同屏幕做的适配器
- windos10下编译opencv_4.0.1+opencv-contrib_4.0.1
- Java ArrayList set()方法与示例
- MongoDB学习笔记二—Shell操作
- 理发店收银系统php,【毕业论文】基于php+mysql美发店收银系统设计与实现.doc
- koa2-cors应答跨域请求实现
- java实例分析宠物商店_java实例分析:宠物商店.ppt
- 蓝桥杯 ADV-84 算法提高 图形输出
- 商务部回应中兴被罚:坚决反对美国用国内法制裁中企
- go: writing stat cache:, permission denied
- 幸福家庭杂志幸福家庭杂志社幸福家庭教育部2022年第1期目录
- SystemUI 布局
- 一发入魂双链表(十字链表)
- Java爬虫后台微信小程序之音乐播放器(下)
- NEON 常用函数及其执行结果
- Linux系统发展历史
- NeHe OpenGL第二十九课:Blt函数
- Qt屏幕的尺寸及屏幕分辨率
- MYSQL详解(5)-索引(一)