什么是Hive——大数据仓库Hive基础

Hive是什么:

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL查询功能;其本质是将HQL转化成MapReduce程序。

  • 构建在Hadoop之上的数据仓库

    • 使用HQL作为查询接口
    • 使用HDFS存储
    • 使用MapReduce计算
  • 灵活性和扩展性比较好:支持UDF,自定义存储格式等

  • 适合离线数据处理


Hive体系结构:

Hive的数据存储基于HDFS,其没有专门的数据存储格式,主要的存储结构主要包括:数据库,文件,表,视图,索引。Hive默认可以直接加载文本文件(TextFile),还支持SequenceFile,RCFile。创建表时指定Hive数据的列分隔符与行分隔符即可解析数据。

  • 用户接口:Client
    • CLI(hive shell)、JDBC/ODBC(java访问hive),WEBUI(浏览器访问hive)
  • 元数据:Metastore
    • 元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;
    • 默认存储在自带的derby数据库中,推荐使用采用MySQL
  • Hadoop
    • 使用HDFS进行存储,使用MapReduce进行计算
  • 驱动器:Driver(包含解析器,编译器,优化器,执行器)
    • 解析器:将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误(比如select中被判定为聚合的字段在group by中是否有出现);
    • 编译器:将AST编译生成逻辑执行计划;
    • 优化器:对逻辑执行计划进行优化;
    • 执行器:把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是MR/TEZ/Spark;

Hive四种表类型

1.分区表
- 最常用
- 可以按时间日期进行分区
2.内部表(管理表)
- 一般创建临时表使用内部表
- 创建的时候如果不指定是外部表,默认就是内部表
- 删除表会将数据一并删除
3.外部表(托管表)
- 推荐使用此方式创建表
- 创建的时候需要使用关键字(EXTERNAL)声明
- 删除表的时候只会删除表结构不会删除数据
4.桶表
- 不常用
- 桶表专门用于抽样查询,是很专业性的
- 不是日常用来存储数据的表,需要抽样查询时,才创建和使用桶表。


Hive 优点与使用场景

优点:

  • 操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手);
  • 避免了去写MapReduce,减少开发人员的学习成本;
  • 统一的元数据管理,可与impala/spark等共享元数据;
  • 易扩展(HDFS+MapReduce:可以扩展集群规模;支持自定义函数);

使用场景:

  • Hive的执行延迟比较高,因此hive常用于数据分析的,对实时性要求不高的场合;
  • Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。

更多信息:Hive官网,入门文档,Hive下载

你可能感兴趣的:(数据库)