hive与HBase的整合案例

shenyz 2021-11-01 原文

Hive和Hbase是两种基于Hadoop的不同技术,Hive是一种类SQL的引擎,并且运行MapReduce任务,Hbase是一种在Hadoop之上的NoSQL 的Key/vale数据库。这两种工具是可以同时使用的。就像用Google来搜索,用FaceBook进行社交一样,Hive可以用来进行统计查询,HBase可以用来进行实时查询,数据也可以从Hive写到HBase,或者从HBase写回Hive。

 将我们HBase的五个jar包拷贝到hive的lib目录下

hbase的jar包都在/export/servers/hbase-1.2.0-cdh5.14.0/lib

我们需要拷贝五个jar包名字如下

  hbase-client-1.2.0-cdh5.14.0.jar            

  hbase-hadoop2-compat-1.2.0-cdh5.14.0.jar

  hbase-hadoop-compat-1.2.0-cdh5.14.0.jar  

  hbase-it-1.2.0-cdh5.14.0.jar    

  hbase-server-1.2.0-cdh5.14.0.jar

我们直接在node03(虚拟机名)执行以下命令,通过创建软连接的方式来进行jar包的依赖

  1. 1 ln -s /export/servers/hbase-1.2.0-cdh5.14.0/lib/hbase-client-1.2.0-cdh5.14.0.jar /export/servers/hive/lib/hbase-client-1.2.0-cdh5.14.0.jar
  2. 2
  3. 3 ln -s /export/servers/hbase-1.2.0-cdh5.14.0/lib/hbase-hadoop2-compat-1.2.0-cdh5.14.0.jar /export/servers/hive/lib/hbase-hadoop2-compat-1.2.0-cdh5.14.0.jar
  4. 4
  5. 5 ln -s /export/servers/hbase-1.2.0-cdh5.14.0/lib/hbase-hadoop-compat-1.2.0-cdh5.14.0.jar /export/servers/hive/lib/hbase-hadoop-compat-1.2.0-cdh5.14.0.jar
  6. 6
  7. 7 ln -s /export/servers/hbase-1.2.0-cdh5.14.0/lib/hbase-it-1.2.0-cdh5.14.0.jar /export/servers/hive/lib/hbase-it-1.2.0-cdh5.14.0.jar
  8. 8
  9. 9 ln -s /export/servers/hbase-1.2.0-cdh5.14.0/lib/hbase-server-1.2.0-cdh5.14.0.jar /export/servers/hive/lib/hbase-server-1.2.0-cdh5.14.0.jar

编辑node03服务器上面的hive的配置文件hive-site.xml添加以下两行配置

  1. cd /export/servers/hive-1.1.0-cdh5.14.0/conf
  2. vim hive-site.xml
  1. <property>
  2.   <name>hive.zookeeper.quorum</name>
  3.   <value>node01,node02,node03</value>
  4. </property>
  5. <property>
  6.   <name>hbase.zookeeper.quorum</name>  
  7.   <value>node01,node02,node03</value>
  8. </property>
  1. cd /export/servers/hive-1.1.0-cdh5.14.0/conf
  2. vim hive-env.sh
  1. export HADOOP_HOME=/export/servers/hadoop-2.6.0-cdh5.14.0
  2. export HBASE_HOME=/export/servers/hbase-1.2.0-cdh5.14.0
  3. export HIVE_CONF_DIR=/export/servers/hive-1.1.0-cdh5.14.0/conf

hive中操作,进入hive客户端

  1. cd /export/servers/hive-1.1.0-cdh5.14.0/
  2. bin/hive

创建hive数据库与hive对应的数据库表

  1. create database course;
  2. use course;
  3. create external table if not exists course.score(id int,cname string,score int) row format delimited fields terminated by \'\t\' stored as textfile ;

准备数据内容如下

  1. cd /export/
  2. vim hive-hbase.txt
  1. 1  zhangsan  80
  2. 2  lisi  60
  3. 3  wangwu  30
  4. 4  zhaoliu  70

进入hive客户端进行加载数据

  1. hive (course)> load data local inpath \'/export/hive-hbase.txt\' into table score;
  2. hive (course)> select * from score;

我们可以创建一个hive的管理表与hbase当中的表进行映射,hive管理表当中的数据,都会存储到hbase上面去

hive当中创建内部表

  1. 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");

 通过insert  overwrite select  插入数据

  1. insert overwrite table course.hbase_score select id,cname,score from course.score;

进入hbase的客户端查看表hbase_score,并查看当中的数据

  1. hbase(main):023:0> list

=> [“hbase_score”, “myuser”, “myuser2”, “student”, “user”]

  1. hbase(main):024:0> scan \'hbase_score\'

ROW                      COLUMN+CELL                                                        

 1                       column=cf:name, timestamp=1550628395266, value=zhangsan            

 1                       column=cf:score, timestamp=1550628395266, value=80                 

 2                       column=cf:name, timestamp=1550628395266, value=lisi                

 2                       column=cf:score, timestamp=1550628395266, value=60                 

 3                       column=cf:name, timestamp=1550628395266, value=wangwu              

 3                       column=cf:score, timestamp=1550628395266, value=30                 

 4                       column=cf:name, timestamp=1550628395266, value=zhaoliu             

 4                       column=cf:score, timestamp=1550628395266, value=70                 

4 row(s) in 0.0360 seconds

进入HBase的shell客户端,手动创建一张表,并插入加载一些数据进去

  1. create \'hbase_hive_score\',{ NAME =>\'cf\'}
  2. put \'hbase_hive_score\',\'1\',\'cf:name\',\'zhangsan\'
  3. put \'hbase_hive_score\',\'1\',\'cf:score\', \'95\'
  4. put \'hbase_hive_score\',\'2\',\'cf:name\',\'lisi\'
  5. put \'hbase_hive_score\',\'2\',\'cf:score\', \'96\'
  6. put \'hbase_hive_score\',\'3\',\'cf:name\',\'wangwu\'
  7. put \'hbase_hive_score\',\'3\',\'cf:score\', \'97\'

在hive当中建立外部表,进入hive客户端,然后执行以下命令进行创建hive外部表,就可以实现映射HBase当中的表数据

  1. CREATE external TABLE course.hbase2hive(id int, name string, score int) STORED BY \'org.apache.hadoop.hive.hbase.HBaseStorageHandler\' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf:name,cf:score") TBLPROPERTIES("hbase.table.name" ="hbase_hive_score");
  1. select * from hbase2hive;

hbase2hive.id   hbase2hive.name  hbase2hive.score
1       zhangsan        95
2       lisi    96
3       wangwu  97
Time taken: 0.211 seconds, Fetched: 3 row(s)

发表于
2019-04-22 01:48 
削皮的胡萝卜 
阅读(580
评论(0
编辑 
收藏 
举报

 

版权声明:本文为shenyz原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/shenyz/articles/10748031.html

hive与HBase的整合案例的更多相关文章

随机推荐

  1. 疫情在家!15 个Github大神项目让你学习,Java教程类开源项目

          · 疫情期间, 在家闲着还不如来学习,今天给大家推荐 15 个新手也能看懂的 Java 教程方向的 […]...

  2. 查找

    这个作业属于哪个班级 数据结构–网络2011/2012 这个作业的地址 DS博客作业05̵ […]...

  3. 计算机BIOS的简单设置(要安装Linux需关闭Security Boot选项)

    计算机BIOS的简单设置(要安装Linux需关闭Security Boot选项) 发布时间:2016-12-0 […]...

  4. 顶峰网谈百度关键词排名基本规则

    本文详细阐述了顶峰网(dingnfengnet.com)对百度关键词排名基本规则的研究成果,明确指明了百度关键 […]...

  5. 《我想进大厂》之Zookeeper夺命连环9问

    谈谈你对Zookeeper的理解? Zookeeper是一个开源的分布式协调服务,由雅虎公司创建,由于最初雅虎 […]...

  6. 欢迎来到 ZooKeeper 动物世界

    本文作者:HelloGitHub-老荀 Hi,这里是 HelloGitHub 推出的 HelloZooKeep […]...

  7. 阿里云搭建简单服务器

    最近买了一个阿里云服务器,准备自己搭建一个简单的服务器访问静态页面或者后期自己开发的项目 一、 购买阿里云服务 […]...

  8. 怎么摆脱又臭又长的 Git 命令?

    在使用 Git 的时候,虽然大部分时候我们用的是图形客户端,但图形客户端不能解决所有的操作,所以,也少不了要需 […]...

展开目录

目录导航