admin 管理员组文章数量: 894198
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 on Hbase 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1687606256h120352.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论