HBase与Hive的集成

HBase与Hive的集成

1、HBase与Hive的对比

  • Hive

    数据仓库:Hive的本质其实就相当于将HDFS中已经存储的文件在Mysql中做了一个双射关系,以方便使用HQL去管理查询。

    用于数据分析、清洗:Hive适用于离线的数据分析和清洗,延迟较高。

    基于HDFS、MapReduce:Hive存储的数据依旧在DataNode上,编写的HQL语句终将是转换为MapReduce代码执行。

  • HBase

    数据库:是一种面向列族存储的非关系型数据库。

    用于存储结构化和非结构化的数据:适用于单表非关系型数据的存储,不适合做关联查询,类似JOIN等操作。

    基于HDFS:数据持久化存储的体现形式是HFile,存放于DataNode中,被ResionServer以region的形式进行管理。

    延迟较低,接入在线业务使用:面对大量的企业数据,HBase可以直线单表大量数据的存储,同时提供了高效的数据访问速度。

2、HBase与Hive集成使用

hive-site.xml中添加zookeeper的属性

	<property>
        <name>hive.zookeeper.quorum</name>
        <value>hadoop102,hadoop103,hadoop104</value>
    </property>

    <property>
        <name>hive.zookeeper.client.port</name>
        <value>2181</value>
    </property>

案例一:(不常见,为案例二做准备)

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

分步实现:

  1. 在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查看,都生成了对应的表

    在这里插入图片描述在这里插入图片描述

    1. 在Hive中创建临时中间表,用于load文件中的数据

      不能将数据直接load进Hive所关联HBase的那张表中

      CREATE TABLE emp(
      empno int,
      ename string,
      job string,
      mgr int,
      hiredate string,
      sal double,
      comm double,
      deptno int)
      row format delimited fields terminated by '\t';
      
    2. 向Hive中间表load数据

      load data local inpath '/opt/software/emp.txt' into table emp;
      
    3. 通过insert命令将中间表中的数据导入到Hive关联Hbase的那张表中

      insert into table hive_hbase_emp_table select * from emp;
      
    4. 查看Hive以及关联的HBase表中是否已经成功的同步插入了数据

      --Hive:
      hive> select * from hive_hbase_emp_table;
      --HBase:
      Hbase> scan 'hbase_emp_table'
      

案例二:HBase中已经存储了某一张表,在Hive中创建一个外部表来关联HBase中的这张表

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

  1. 在hive中创建外部表

    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");
    
  2. 关联后就可以使用Hive函数进行一些分析操作了

    hive (default)> select * from relevance_hbase_emp;
    
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MelodyYN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值