HBase整合Hive

6 篇文章 0 订阅

Hive与HBase的对比

Hive的特点

  • Hive是数据仓库,数据存储在HDFS上,方便使用HQL去管理。
  • Hive适用于离线的数据分析和清洗工作,延迟比较高。
  • Hive的语句最后还是转化为MR语句运行。

HBase的特点

  • HBase是列式存储非关系型数据库,用于存储结构化和非结构化数据。
  • 适用于单表的非关系型数据的存储,不适合做join等连接操作。
  • 数据以HFile的方式持久化,存储在HDFS上。以Region的形式被Region Server管理。
  • 延迟低,访问速度快,适用于在线业务。

案例1:HBase中无表

目标:

    建立Hive表,关联HBase表,插入数据到Hive表的同时能够影响HBase表。

在Hive中创建表,关联HBase

CREATE TABLE hive_hbase_emp_table(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:ename,info:job,info:mgr,info:hiredate,info:sal,info:comm,info:deptno")
TBLPROPERTIES ("hbase.table.name" = "hbase_emp_table");

    完成之后,可以分别进入Hive和HBase查看,都生成了对应的表。
    注意:Hive和HBase关联的表不能直接load导入数据,要用insert into table … select 这种形式导入数据。

导入数据

-- 导入数据
insert into table hive_hbase_emp_table select * from emp;

案例2:HBase中已有表

目标:

    在HBase中已经存储了某一张表hbase_emp_table,然后在Hive中创建一个外部表来关联HBase中的hbase_emp_table这张表,使之可以借助Hive来分析HBase这张表中的数据。

创建外部表

CREATE EXTERNAL TABLE relevance_hbase_emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int)
STORED BY 
'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = 
":key,info:ename,info:job,info:mgr,info:hiredate,info:sal,info:comm,info:deptno") 
TBLPROPERTIES ("hbase.table.name" = "hbase_emp_table");

关联完毕后,就可以使用Hive的函数来操作分析数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值