zoukankan      html  css  js  c++  java
  • HBase集成Hive的总结

    一、hbase为什么要集成hive:

    HBase是一个NoSQL数据库!一般用作对海量大表数据的实时读写,不支持复杂的查询!

    Hive是一个数据仓库软件!Hive主要用来对数据仓库中的数据进行分析!Hive支持使用HQL对表中的数据进行查询!

    Hive ----> HQL----->HDFS上的数据----->MR

    HBase---->API---->HDFS上的数据----->MR

    可以让hive集成HBase,hbase作为数据存储的介质!hive作为分析引擎,来分析Hbase中已经存储的数据!

    hbase中数据的逻辑结构是一个表,hive对表中的结构化数据进行分析!

    二、两种场景:

    1、数据已经在hbase中,只需要根据hbase中已经有的表的结构,在hive中进行参照,创建hive中的表

    1 CREATE external TABLE hive_HBase_dept_table(
    2 deptid int,
    3 deptname string,
    4 num int
    5 )
    6 STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    7 WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:deptname,info:num")
    8 TBLPROPERTIES ("hbase.table.name" = "dept");

    代码的相关说明:

    1、创建的表应该是外部表,原因:数据在hbase中,hive不在维护

    2、stored by:代表向表中读写数据时,借助此handler类完成操作(数据在hbase中,没有存在hdfs上)

    3、在进行映射时,字段的顺序要和列的顺序一致

    4、hive中的列的类型要和hase中的数据类型一致,或者需要保证转换不能失败

    2、数据还没有导入hbase中,可以现在hive中建表,在hive的表中执行insert语句,将数据导入到hbase中

    1 CREATE  TABLE hive_HBase_dept2_table(
    2 deptid int,
    3 deptname string,
    4 num int
    5 )
    6 STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    7 WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:deptname,info:num")
    8 TBLPROPERTIES ("hbase.table.name" = "dept2");

    代码的相关说明:

    1、这种情况hive负责数据的生命周期,所以hive应该为管理表

    2、注意handler的jar包版本要与hbase的版本匹配

  • 相关阅读:
    java中原子操作的实现分析
    AQS源码分析
    Java JNDI 学习
    门面模式、代理模式、适配器模式的区别
    tomcat源码阅读之StandardWrapper解析
    tomcat源码阅读之过滤器
    tomcat源码阅读之SingleThreadModel
    tomcat源码阅读之单点登录
    技术人员的八条宝贵经验,时刻提醒自己,共勉之
    tomcat源码阅读之安全机制
  • 原文地址:https://www.cnblogs.com/atBruce/p/12555653.html
Copyright © 2011-2022 走看看