---
url: /hive/introduction.md
description: Hive 是什么，为什么要用Hive，Hive支持的文件格式
---

# 认识Hive

Hive是大数据开发、分析领域无法绕开的一个话题。我将分认识Hive、快速部署、快速入门等几个模块为同学们详细地介绍Hive，期望可以为刚刚接触大数据领域的同学们建立一个初步的认知。

## Hive 是什么

Hive，又称Apache Hive，由 Facebook 开源用于解决海量结构化日志的数据统计工具。

Hive是基于Apache Hadoop的一个数据仓库工具，用来进行数据提取、转化、加载，这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。

Hive可以将结构化的数据文件映射为一张表，并定义了简单的类 SQL 查询语言，称为 HQL ，它允许熟悉 SQL 的用户查询数据。

![](/img/94b7f718-2a67-4f5d-81d9-d8540cdd500b.png)

> hive的中文意思为蜂巢，所以Hive的Logo像一只蜜蜂也是很贴合了。

## 为什么要用Hive

现如今，有相当多的企业在使用Hive搭建公司的数据仓库，那么对于刚接触大数据领域的同学们不妨了解一下Hive，可以加深自己对数据仓库的理解，同时增加自身的技术能力。

Hive有哪些优势：

* 有类似于SQL语句的HQL，学习简单易上手
* 不再需要写MapReduce，大大减少了使用者的学习成本
* 多用于处理海量的离线数据
* 支持使用者自定义函数，可以根据自己的需求来实现自己的函数

说了Hive的优势，也提一下Hive不足的地方。Hive查询数据的延迟比较高，所以对实时性要求比较高的场景就不适用。同时，对于查询小数据量的场景也无法体现出Hive的优势。

## Hive支持的文件格式

* Text File

TEXTFILE 即正常的文本格式，是Hive默认文件存储格式。默认每一行就是一条记录，可以指定任意的分隔符进行字段间的分割。但这个格式无压缩，需要的存储空间很大。

* ORC Files

一种列式文件存储格式，具有很高的压缩比，可以很大程度的节省存储和计算资源，但它在读写时候需要消耗额外的CPU资源来压缩和解压缩。

* Parquet

Parquet仅仅是一种存储格式，它是语言、平台无关的，并且不需要和任何一种数据处理框架绑定。这也是parquet相较于orc的仅有优势，支持嵌套结构。但是Parquet不支持update操作(数据写成后不可修改),不支持ACID等

* RCFile

Record Columnar的缩写，是一种行列存储相结合的存储方式，还是Hadoop中第一个列文件格式。能够很好的压缩和快速的查询。通常写操作比较慢。

* SequenceFile

SequenceFile是Hadoop API 提供的一种二进制文件，它将数据以\<key,value>的形式序列化到文件中。SequenceFile支持三种压缩选择：NONE, RECORD, BLOCK。Record压缩率低，一般建议使用BLOCK压缩。

* Avro Files
  Avro是一种用于支持数据密集型的二进制文件格式，它的文件格式更为紧凑。读取大量数据时，Avro能够提供更好的序列化和反序列化性能。

Text File、 RCFile、 ORC、 Parquet为Hive**最常用**的四大存储格式。

**耗时比较**

ORCFile存储文件读操作效率最高。

ORC < Parquet < RCFile < TextFile

**压缩效率比较**

ORCFile存储文件占用空间少。

ORC < Parquet < RCFile < TextFile

## 进阶

本文介绍了Hive，还介绍了Hive支持的文件格式。Hive中常用的四个存储格式在其它大数据相关的产品中也会使用，建议同学们可以通过本系列教程开始认识并使用。如果想要进一步学习Hive，可以关注：遇码，回复**hive**，获取官方文档。
