根据万字长文——最详Hive入门指南这篇博客,以下几个关键点是值得记忆的,这些知识点不仅有助于理解Hive的基本概念和使用场景,而且在面试中可能会被问到:

简要知识点

  1. Hive的本质和作用
  • Hive是一个建立在Hadoop生态系统之上的数据仓库软件,它允许通过SQL-like的查询语言(HiveQL)对存储在HDFS上的数据进行查询、统计和分析。
  • Hive将SQL语句转换成MapReduce、Tez或Spark作业进行执行。
  1. Hive与SQL的区别
  • Hive SQL适合于处理大数据集,而传统SQL更适用于小到中等规模的数据集。
  • Hive使用Hadoop的HDFS作为存储系统,而传统SQL使用本地文件系统或专用的数据库存储。
  • Hive的设计初衷是为了批量处理和分析大数据,因此它的实时查询能力不如传统SQL。
  • Hive易于扩展存储和计算能力,而传统SQL数据库在这方面可能不如Hive灵活。
  1. Hive的表类型
  • Hive中的表可以是内部表或外部表,内部表的数据和元数据都由Hive管理,而外部表的数据存储在HDFS上,Hive只管理元数据。
  1. Hive的数据类型
  • Hive支持多种数据类型,包括TINYINT、SMALLINT、INT、BIGINT、BOOLEAN、FLOAT、DOUBLE、STRING、TIMESTAMP和BINARY等。
  1. Hive的执行流程
  • 从UI或Cli与Driver建立连接,进行访问。
  • 编译过程中获取和查询元数据,然后由Execution Engine执行。
  • 任务最终发送给JobTracker进行调度和分发。
  1. Hive的分区和分桶
  • 分区表根据业务需求将数据分配到不同的子表中,提高并发量和查询效率。
  • 分桶则是对数据进行更细粒度的划分,通过某列属性值的哈希值进行区分,提高join操作和数据抽样的效率。
  1. Hive的优化策略
  • 包括减少查询数据量、使用压缩数据、合理控制reducer数量、使用Map join处理小表join大表等。
  1. Hive的数据倾斜问题
  • 数据倾斜是Hive中常见的性能问题,可以通过对异常值赋予随机变量、使用map join或调整join顺序等方法来解决。

区别(表格展示)

以下是一个简洁的表格,展示了Hive和传统SQL(通常指关系型数据库管理系统中使用的SQL,如MySQL)的主要区别:

特性

Hive

传统SQL (如MySQL)

设计目的

大数据批量处理和分析

结构化数据的存储、管理和查询

数据存储

基于Hadoop的HDFS

本地或远程服务器的文件系统

查询语言

HiveQL(类似SQL)

SQL(结构化查询语言)

数据处理模式

批处理模式

交互式查询和事务处理

性能特点

优化批量处理大数据

优化快速随机读写和实时查询

扩展性

水平扩展,适用于大数据集

通常需要更复杂的配置来处理大数据

容错性

高容错性,依赖数据副本

通常依赖事务日志和备份

适用场景

数据仓库、大数据分析

在线事务处理、Web应用、企业系统

并发处理

通过MapReduce等框架实现

内置的并发控制和事务处理

执行引擎

将HiveQL转换为MapReduce等作业执行

使用优化器和执行引擎进行查询处理

支持的数据类型

包括复杂的大数据类型

主要是基于关系模型的数据类型