zoukankan      html  css  js  c++  java
  • HBase与Hive集成

    之前有操作过HBase和Hive的案例,将30w条数据从Hive导入HBase。使用sqoop可以快速简单做到,但是在最新版HBase2.0与最新版Hive3.0之间,旧版sqoop不行,因此当时使用了JDBC来连接两者,达到数据导出的目的。


    HBase与Hive的对比

    Hive
    • 作为数据仓库,Hive的本质是将HDFS已经存储的文件在MySQL中做了一个双射关系,以方便使用HiveQL管理查询
    • 用于数据分析、清洗,Hive适用于离线的数据分析和清洗
    HBase
    • 数据库,面向列族存储的非关系型数据库
    • 用于存储结构化和非结构化的数据,不适合做关联查询,join
    • 延迟较低,高效的数据访问

    集成使用

    案例一

    建立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");
    

    创建完,HBase也会出现此表

    在Hive中创建临时中间表,用于load文件中的数据
    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 '	';
    

    不能将数据直接load到Hive关联HBase的表中,因此要创建中间表

    向Hive中间表中load数据
    hive> load data local inpath '/home/admin/softwares/data/emp.txt'
    into table emp;
    
    通过insert命令将中间表中的数据导入Hive关联HBase的表中
    INSERT INTO TABLE hive_hbase_emp_table
    SELECT * FROM emp;
    

    此时Hive和HBase两张表都插入了数据

    总结

    Hive可以直接创建表关联到HBase,用中间表导入数据后插入关联表。

    案例二

    在HBase中已经存储了一张表hbase_emp_table,在Hive中创建关联表,就可以使用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:co
    mm,info:deptno")
    TBLPROPERTIES ("hbase.table.name" = "hbase_emp_table");
    
    总结

    这样就不需要通过JavaAPI读取HBase数据,然后编程做MapReduce程序处理业务逻辑,可直接通过Hive,效率提高了。遇到部分特殊情况,估计还是得通过JavaAPI。

  • 相关阅读:
    案例19-页面使用ajax显示类别菜单
    案例18-首页最新商品和热门商品显示
    案例17-validate自定义校验规则校验验证码是否输入正确
    案例16-validate自定义校验规则校验用户名是否存在
    案例15-基本的表单校验使用validate
    测开之路六十九:监控平台之视图层
    测开之路六十八:监控平台之监控逻辑和处理逻辑
    测开之路六十七:监控平台之附加功能准备
    测开之路六十六:UI测试平台之处理逻辑和蓝图添加到程序入口
    测开之路六十五:UI测试平台之js
  • 原文地址:https://www.cnblogs.com/chenshaowei/p/12493319.html
Copyright © 2011-2022 走看看