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的版本匹配

  • 相关阅读:
    Windows2008R2安装DNS和SQLServer200r2服务 (9.18第七天)
    Windows2008R2安装iis和iis下搭建web服务器(9.18 第七天)
    Ubuntu 安装phpmyadmin (9.17第六天)
    Ubuntu Navicat链接mysql (9.17第六天)
    Spring之AOP由浅入深
    oracle并行模式(Parallel)
    转:Java后端面试自我学习
    Spring Security 简介
    spring boot入门
    git--分布式版本管理系统
  • 原文地址:https://www.cnblogs.com/atBruce/p/12555653.html
Copyright © 2011-2022 走看看