Hive综合HBase——经Hive阅读/书写 HBase桌子
社论:
本文将Hive与HBase整合在一起,使Hive能够读取HBase中的数据,让Hadoop生态系统中最为经常使用的两大框架互相结合。相得益彰。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2wxMDF5ang=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
写在前面二:
使用软件说明
约定全部软件的存放文件夹:
/home/yujianxin
一、Hive整合HBase原理
Hive与HBase整合的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive-hbase-handler-0.9.0.jar工具类,例如以下图
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2wxMDF5ang=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
Hive与HBase通信示意图
二、详细步骤
安装前说明
1、关于Hadoop、HBase、Hive集群的搭建,请參考本人博文“基于Hadoop的数据分析综合管理平台之Hadoop、HBase全然分布式集群搭建”
2、本文中Hadoop、HBase、Hive安装路径
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2wxMDF5ang=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
2.1、拷贝jar包
删除$HIVE_HOME/lib/下HBase、Zookeeper相关jar
rm -rf $HIVE_HOME/lib/zookeeper-*.jar
rm -rf $HIVE_HOME/lib/hbase*.jar
又一次拷贝
cp $HBASE_HOME/hbase-0.94.7-security.jar $HIVE_HOME/lib/
cp $HBASE_HOME/lib/zookeeper-3.4.5.jar $HIVE_HOME/lib/
2.2、改动$HIVE_HOME/conf/hive-site.xml
mkdir $HIVE_HOME/logs
在尾部加入
<property>
<name>hive.querylog.location</name>
<value>/home/yujianxin/hive/hive-0.9.0/logs</value>
</property>
<property>
<name>hive.aux.jars.path</name>
<value>
file:///home/yujianxin/hive/hive-0.9.0/lib/hive-hbase-handler-0.9.0.jar,
file:///home/yujianxin/hive/hive-0.9.0/lib/hbase-0.94.7-security.jar,
file:///home/yujianxin/hive/hive-0.9.0/lib/zookeeper-3.4.5.jar
</value>
</property>
改动
<property>
<name>hive.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
2.3、拷贝hbase-0.94.7-security.jar到全部hadoop节点(包含master)的hadoop/lib下
cp $HBASE_HOME/hbase-0.94.7-security.jar $HADOOP_HOME/lib
2.4、拷贝hbase/conf下的hbase-site.xml文件到全部hadoop节点(包含master)的hadoop/conf下
cp $HBASE_HOME/conf/hbase-site.xml $HADOOP_HOME/conf
三、启动、使用配置后Hive,測试是否配置成功
3.1、启动Hive
集群方式启动
hive --auxpath /home/yujianxin/hive/hive-0.9.0/lib/hive-hbase-handler-0.9.0.jar,/home/
yujianxin/hive/hive-0.9.0/lib/hbase-0.94.7-security.jar,/home/yujianxin/hive/hive-0.9.
0/lib/zookeeper-3.4.5.jar
能够将此启动Hive与HBase整合的命令写成Shell脚本,设置成开机启动
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2wxMDF5ang=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
3.2、在Hive中创建HBase识别的表
CREATE TABLE hbase_hive_1(key int, value string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
TBLPROPERTIES ("hbase.table.name" = "xyz");
hbase.table.name 定义在hbase中的table名称
多列时,data:1,data:2
多列族时,data1:1,data2:1
hbase.columns.mapping 定义在hbase的列族,里面的:key 是固定值并且要保证在表pokes中的foo字段是唯一值
创建有分区的表
CREATE TABLE hbase_hive_2(key int, value string)
partitioned by (day string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
TBLPROPERTIES ("hbase.table.name" = "xyz2");
分别查看Hive、HBase中建立的表
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2wxMDF5ang=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2wxMDF5ang=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
3.3、导入数据
新建hive的数据表
create table pokes(foo int,bar string)
row format delimited fields terminated by ',';
批量导入数据
load data local inpath '/home/yujianxin/temp/data1.txt' overwrite into table pokes;
使用sql导入hbase_table_1
SET hive.hbase.bulk=true;
insert overwrite table hbase_hive_1 select * from pokes;
导入有分区的表
insert overwrite table hbase_hive_2 partition (day='2012-01-01') select * from pokes;
往Hive中插入数据同一时候会插入到HBase中
3.4、分别查看Hive、HBase中的数据
OK,到此Hive、HBase整合成功。
——————————————————————————————————————————————————————————————————
以下再给出较复杂的測试样例
情况一、对于在hbase已经存在的表,在hive中使用CREATE EXTERNAL TABLE来建立联系
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2wxMDF5ang=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
create external table hive_test (key int,gid map<string,string>,sid map<string,string>,uid map<string,string>)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" ="a:,b:,c:")
TBLPROPERTIES ("hbase.table.name" = "test1");
查询gid字段中value值
Hive成功读取到HBase中的数据
情况二、假设hbase表test2中的字段为user:gid,user:sid,info:uid,info:level
在hive中建表语句为
CREATE EXTERNAL TABLE hive_test_2(key int,user map<string,string>,info map<string,string>)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" ="user:,info:")
TBLPROPERTIES ("hbase.table.name" = "test2");
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2wxMDF5ang=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
Hive成功读取到HBase中的数据
版权声明:本文博主原创文章,博客,未经同意不得转载。
Hive综合HBase——经Hive阅读/书写 HBase桌子的更多相关文章
- hbase结合hive和sqoop实现数据指导mysql
hive综合hbase两个优势表中的: 1.实现数据导入到MYSQL. 2.实现hbase表转换为另外一张hbase表. 三个操作环节: 1.hbase关联hive作为外部 ...
- Hbase与hive整合
//hive与hbase整合create table lectrure.hbase_lecture10(sname string, score int) stored by 'org.apache.h ...
- apache-hadoop-1.2.1、hbase、hive、mahout、nutch、solr安装教程
1 软件环境: VMware8.0 Ubuntu-12.10-desktop-i386 jdk-7u40-linux-i586.tar.gz hadoop-1.2.1.tar.gz eclipse-d ...
- Hbase总结(一)-hbase命令,hbase安装,与Hive的区别,与传统数据库的区别,Hbase数据模型
Hbase总结(一)-hbase命令 下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下: 名称 命令表达式 创建表 create '表名称', ...
- Hive over HBase和Hive over HDFS性能比较分析
http://superlxw1234.iteye.com/blog/2008274 环境配置: hadoop-2.0.0-cdh4.3.0 (4 nodes, 24G mem/node) hbase ...
- Hadoop学习之HBase和Hive的区别
Hive是为简化编写MapReduce程序而生的,使用MapReduce做过数据分析的人都知道,很多分析程序除业务逻辑不同外,程序流程基本一样.在这种情况下,就需要Hive这样的用户编程接口.Hive ...
- 大数据学习系列之八----- Hadoop、Spark、HBase、Hive搭建环境遇到的错误以及解决方法
前言 在搭建大数据Hadoop相关的环境时候,遇到很多了很多错误.我是个喜欢做笔记的人,这些错误基本都记载,并且将解决办法也写上了.因此写成博客,希望能够帮助那些搭建大数据环境的人解决问题. 说明: ...
- Hbase 与Hive整合
HBase与Hive的对比 25.1.Hive 25.1.1.数据仓库 Hive的本质其实就相当于将HDFS中已经存储的文件在Mysql中做了一个双射关系,以方便使用HQL去管理查询. 25.1.2. ...
- Hadoop+HBase+Spark+Hive环境搭建
杨赟快跑 简书作者 2018-09-24 10:24 打开App 摘要:大数据门槛较高,仅仅环境的搭建可能就要耗费我们大量的精力,本文总结了作者是如何搭建大数据环境的(单机版和集群版),希望能帮助学弟 ...
随机推荐
- POJ 3619 Speed Reading(简单题)
[题意简述]:有K头牛,N页书,每次第i头牛每分钟仅仅能读Si页书,连续读Ti分钟,之后歇息Ri分钟.如今问我们第i头牛花费多少时间能够读完这N页书. [分析]:简单的模拟 //220K 32Ms # ...
- 每天一个JavaScript实例-推断图片是否载入完毕
<!doctype html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- 【数据库摘要】12_Sql_存储过程
SQL 存储过程 存储过程创建语法: create or replace procedure 存储过程名(param1 in type,param2 out type) as 变量1 类型(值范围); ...
- POJ 2442 Squence (STL heap)
题意: 给你n*m的矩阵,然后每行取一个元素,组成一个包含n个元素的序列,一共有n^m种序列, 让你求出序列和最小的前n个序列的序列和. 解题思路: 1.将第一序列读入seq1向量中,并按升序排序. ...
- hdu 4708 Rotation Lock Puzzle 2013年ICPC热身赛A题 旋转矩阵
题意:给出一个n*n的矩阵,旋转每一圈数字,求出对角线可能的最大值,以及转到最大时的最小距离. 只要分析每一层就可以了,本来想用地址传递二维数组,发现行不通,改了一下就行了. 这里有个坑,比如: 1 ...
- hadoop(六) - ZooKeeper安装与配置
一. ZooKeeper配置 1.使用winscp上传zk安装包 zookeeper-3.4.5.tar.gz 2.解压安装包tar -zxvf zookeeper-3.4.5.tar.gz -C / ...
- 使用ANR-WatchDog来检測ANR
使用开源项目ANR-WatchDog来检測ANR.下载链接为:https://github.com/SalomonBrys/ANR-WatchDog Eclipse版本号仅仅需下载相应的jar包.在主 ...
- Dom对象和JQuery对象的详细介绍及其区别
一直搞不清Dom对象和JQuery对象之间的区别,今天好好总结下 1.dom对象(摘抄自百度百科http://baike.baidu.com/link?url=4L8bZ7kW6kE-it4F-1LU ...
- 在Window和Linux下使用Zthread库
ZThread库是一个开源的跨平台高级面向对象的线性和sycnchronization 库,以运行POSIX 和Win32 系统中的C++程序. ZThread库的主页:http://zthread. ...
- Socket编程之聊天程序 - 模拟Fins/ModBus协议通信过程
设备控制软件编程涉及到的基本通信方式主要有TCP/IP与串口,用到的数据通信协议有Fins与ModBus. 更高级别的通信如.net中的Remoting与WCF在进行C/S架构软件开发时会采用. 本篇 ...