文档章节

Hive(四):Hive与HBase的整合过程中的基本命令操作。

berg-dm
 berg-dm
发布于 2016/05/29 19:47
字数 1056
阅读 120
收藏 1

 

一:Hive与Hbase的整合过程。

1.创建HBase识别的表,然后查看表是否创建成功。

hive:

hive> CREATE TABLE hivehbase(key int, value string)
    > STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
    > WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,columnfamily1:val")
    > TBLPROPERTIES ("hbase.table.name" = "hbasehive");

hive> CREATE TABLE hivehbase(key int, value string)
    > STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
    > WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,columnfamily1:val")
    > TBLPROPERTIES ("hbase.table.name" = "hbasehive");
OK
Time taken: 9.881 seconds
hive> show tables;
OK
hivehbase
testhive
Time taken: 0.055 seconds, Fetched: 2 row(s)

hbase:

hbase(main):002:0> list
TABLE  
hbasehive                                                                       
                                                                     

注意:     hbase.table.name 定义在hbase的table名称 
                hbase.columns.mapping 定义在hbase的列族 

2.使用sql往hivehbase中导入数据,将testhive表中的以下数据导入到hivehbase中,如下:

hive> select * from testhive;
OK
1	Berg
1	Berg
2	Cccc
3	Xxxx
4	Jjjj

 开始导入数据,即: 注意overwrite,相同的数据记录会覆盖点,复制。

hive>  insert overwrite table hivehbase select * from testhive;

导入数据成功后,在查询该表中数据,即:

hive> select * from hivehbase;
OK
1	Berg
2	Cccc
3	Xxxx
4	Jjjj
Time taken: 0.458 seconds, Fetched: 4 row(s)

然后进入hbase,查看hbase中hbasehive表中是否存在数据:

hbase(main):004:0> scan 'hbasehive'
ROW                       COLUMN+CELL                                                             
 1                        column=columnfamily1:val, timestamp=1464514508295, value=Berg           
 2                        column=columnfamily1:val, timestamp=1464514508295, value=Cccc           
 3                        column=columnfamily1:val, timestamp=1464514508295, value=Xxxx           
 4                        column=columnfamily1:val, timestamp=1464514508295, value=Jjjj           
4 row(s) in 0.0470 seconds

可以看到,在hive中往hivehbase中添加的数据,已经存在在hbase中的hbasehive表中了,
那反过来,在hbase中往hbasehive中添加的数据,在hive中的hivehbase能否查看到了?

往hbase中的hbasehive中添加一条数据记录,如下:

hbase(main):007:0> put 'hbasehive', '5','columnfamily1:val','Yyyy'

然后在在hive中查看hivehbase中的表数据,可以看到:

hive> select * from hivehbase;
OK
1    Berg
2    Cccc
3    Xxxx
4    Jjjj
5    Yyyy   : 已经说明,在hbase中操作数据,也能够在hive中查询到。

 

3.hive访问已经存在的hbase,使用CREATE EXTERNAL TABLE,

 在hbase中准备一张 student表,并为其表中插入三条数据记录,即:

hbase(main):026:0> create 'student','info'


hbase(main):028:0> put 'student','1','info:name','Berg'

hbase(main):029:0> put 'student','2','info:name','Hbase'

hbase(main):030:0> put 'student','3','info:name','hive'
 

使用CREATE EXTERNAL TABLE:

    CREATE EXTERNAL TABLE hbase_person(key string, value string,value string,value int)       STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
    WITH SERDEPROPERTIES ("hbase.columns.mapping" = "info:name,info:sex,info:age")   
    TBLPROPERTIES("hbase.table.name" = "person"); 

如下:

hive> CREATE EXTERNAL TABLE hivehbase_student(key int, value string)
    > STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    > WITH SERDEPROPERTIES ("hbase.columns.mapping" = "info:name")
    > TBLPROPERTIES("hbase.table.name" = "student");
OK


查看表是否生成:
hive> show tables;
OK
hivehbase_student   : 表示已经生成存在。


然后在查看hive中 这张表的数据: 
hive> select * from hivehbase_student;
OK
1    Berg
2    Hbase
3    hive   

结果表名,该数据跟hbase中student表中的数据一致。

 

****************************************************************************************************

完成上述操作后,在接着往下看:

二:多列和多列族(Multiple Columns and Families) 

1.在hive中操作数据库,如下:

先准备一张元数据表,multiplehive,往该表中存放多条数据记录,操作如下:

hive> create table multiplehive
    > (id int, name string,sex string, age int)
    > ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE;
OK
Time taken: 0.179 seconds
hive> load data local inpath '/home/hadoop/mytestdata/multiplehive.txt' into table multiplehive;
Loading data to table default.multiplehive
OK
Time taken: 0.736 seconds
hive> select * from multiplehive;
OK
1	Berg	f	21
2	BigData	m	20
Time taken: 0.186 seconds, Fetched: 2 row(s)

CREATE TABLE hivehbase_person(key int, name string, sex string, age int) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name,info:sex,info:age")
TBLPROPERTIES("hbase.table.name" = "hbasehive_person");

hive> CREATE TABLE hivehbase_person(key int, name string, sex string, age int) 
    > STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    > WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name,info:sex,info:age")
    > TBLPROPERTIES("hbase.table.name" = "hbasehive_person");
OK

创建关联表成功后,在hive中往表 hivehbase _person表中插入准备好的数据,即:

hive> insert overwrite table hivehbase_person select id,name,sex,age from multiplehive;
 

然后在查看这张表的数据,如下:

hive> select * from hivehbase_person;
OK
1	Berg	f	21
2	BigData	m	20
Time taken: 0.679 seconds, Fetched: 2 row(s)

再去Hbase中,查看这张表的数据:hbase(main):039:0> scan 'hbasehive_person'

hbase(main):039:0> scan 'hbasehive_person'
ROW                       COLUMN+CELL                                                             
 1                        column=info:age, timestamp=1464522188307, value=21                      
 1                        column=info:name, timestamp=1464522188307, value=Berg                   
 1                        column=info:sex, timestamp=1464522188307, value=f                       
 2                        column=info:age, timestamp=1464522188307, value=20                      
 2                        column=info:name, timestamp=1464522188307, value=BigData                
 2                        column=info:sex, timestamp=1464522188307, value=m                       
2 row(s) in 8.1630 seconds

 

 

 

 

更多学习:

hbase的一些基本命令的操作:

http://my.oschina.net/gently/blog/674386  (这是自己写的)

hive与hbase的整合:

http://blog.csdn.net/wulantian/article/details/38111683 

hive导入数据的四种方式:

http://blog.csdn.net/lifuxiangcaohui/article/details/40588929

 

另外在收藏一个不错的网址学习:

http://lxw1234.com/archives/2015/06/319.htm

 

 

© 著作权归作者所有

berg-dm
粉丝 26
博文 98
码字总数 88970
作品 0
深圳
程序员
私信 提问
hive 与 hbase 结合

一、hive与hbase的结合 Hive会经常和Hbase结合使用,把Hbase作为Hive的存储路径,所以Hive整合Hbase尤其重要。使用Hive读取Hbase中的数据,可以使用HQL语句在HBase表上进行查询、插入操作;甚...

meteor_hy
2018/06/26
0
0
实现HBase与Hive之间数据互通互导

今天主要给大家讲解一下,如何使用Hive来查询及操作HBase里面的数据,也就是实现二者的数据互通互导。 首先不了解HBase的同学可以看一下我之前写过的一片博文: 一、那么看完之后我们先来简单...

马修
2018/08/27
0
0
学习Hadoop资料分享

最近一直在学习Hadoop,没办法,工作需要,最近在网上收集资料时,看到了一个课程,叫Cloudera Hadoop 4系列实战课程(电商业日志流量分析项目),把课程内容的大概给大家看一下,有40课时,看...

adiykk
2013/06/19
954
5
sqoop导入数据到Base并同步hive与impala

使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 基础环境 Sqool和Hive、HBase简介 测试Sqoop 使用Sqoop从MySQL导入数据到Hive 使用Sqoop从MySQL导入数据到HBase 关于Sqoop2 综上所述 其他...

hblt-j
2018/07/20
236
0
Hive Hbase区别 整理

Hive是为了简化编写MapReduce程序而生的,使用MapReduce做过数据分析的人都知道,很多分析程序除业务逻辑不同外,程序流程基本一样。在这种情况下,就需要Hive这样的用戶编程接口。Hive本身不...

李超
2015/04/17
334
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
11
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部