• 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。

  • 相关阅读:
    【打印】windows打印控件,Lodop.js介绍
    【MySQL】MySQL查询数据库各表的行数
    【MySQL】MySQL中查询出数据表中存在重复的值list
    【php】php5.0以上,instanceof 用法
    日期转换:Cannot format given Object as a Date (SimpleDateFormat的parse和format)
    Groovy 正则表达式 匹配点号
    什么是开发框架
    SoapUI 增大使用内存
    Groovy API link
    Groovy 跳出each循环
  • 原文地址:https://www.cnblogs.com/chenshaowei/p/12493319.html
Copyright © 2020-2023  润新知