Hive简介

Hive 是基于 Hadoop 的一个数据仓库工具,用来进行数据提取、转化、加载。

这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。

hive 数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供 SQL 查询功能,能将 SQL 语句转变成 MapReduce 任务来执行。

一、文件存储格式

在HIVE中,常见的文件存储格式有

1 TextFile

2 Parquet

3 ORC

4 Sequencefile

5 RC

6 AVRO

注意:TextFile、Sequencefile 基于行存储,ORC、Patquet基于列存储。

行存储和列存储

hive 文件存储位置 hive的存储格式_hive 文件存储位置

 

行存储的特点:查询满足条件的一整行数据时,列式存储则需要去每个聚集的字段找到对应的每列的值,行存储只需要找到其中一个值,其余的值都在相邻地方,所以此时行存储查询数据更快。

列式存储的特点:查询满足条件的一整列数据的时候,行存储则需要去每个聚集的字段找到对应的每个行的值,列存储只需要找到其中一个值,其余的值都在相邻的地方,所以此时列式查询的速度更快。另一方面,每个字段的数据类型一定是相同的,列式存储可以针对性的设计更好的压缩算法

当查询结果为一整行的时候,行存储效率会高一些;当查询表中某几列时,大数据培训列存储的效率会更高。

在对数据的压缩方面,列存储比行存储更有优势,所以列存储占用空间相对小一些。

1.TextFile

Hive中默认的存储文件格式,行存储。每一行都是一条记录,每行都以换行符(\n)结尾。数据不做压缩,磁盘开销大,数据解析开销大。文件拷贝至hdfs不进行处理。

优点:最简单的数据格式,便于和其他工具(Pig,grep,sed,awk)共享数据,便于查看和编辑;加载较快

缺点:耗费存储空间,I/O性能较低;Hive不进行数据切分合并,不能进行并行操作,查询效率低。

应用场景:适合于小型查询,查看具体数据内容的和测试操作。

建表是进行限定:

stored as textfile

2.sequencefile

含有键值对的二进制文件,行存储,Hadoop API提供的一种二进制文件支持,其具有使用方便、可分割、可压缩的特点

优点:可压缩、可分割,优化磁盘利用率和I/O;可并行操作数据,查询效率高

缺点:存储空间消耗最大;对于Hadoop生态系统之外的工具不适用,需要通过text文件转换加载

解释:text转换加载,是指linux的shell端的 -text 命令来查看二进制数据

应用场景:适用于数据量较小,大部分列的查询。

建表是进行限定:

sorted as sequencefile

3.RC

是一种行列存储相结合的存储方式。首先,将数据按行分块,保证同一个record在一个快上,避免读一个记录需要读取多个block。其次,快数据列式存储,有利于数据压缩和快速的列存储。

4.orc(工作中常用)

orc文件代表了优化排柱状的文件格式。orc文件格式提供了一种将数据存储在Hive表中的高效方法。这个文件系统实际上是为了克服其他Hive文件格式的限制而设计的。HIve从大型表读取、写入和处理数据时,使用orc文件可以提高性能

数据按行分块 每块按列存储。

特点:压缩快,快速列存取、是rcfile的改良版本。

缺点:加载时性能消耗较大;需要通过text文件转化加载;

应用场景:适用于Hive中大型的存储、查询

建表是进行限定:

sorted as orc

5.parquet

parquet类似于orc、相对于orc文件格式,hadoop生态系统中大部分工程都支持parquet文件。

存储模式:按列存储,Parquet文件是以二进制方式存储的,不可以直接读取和修改,文件是自解析的,文件中包括该文件的数据和元数据。

优点:Parquet能够很好的压缩和编码,有良好的查询性能,支持优先的模式演进。

缺点:写速度通常比较慢,不支持update、insert,delete、ACID等特性。

应用场景:适用于字段数非常多,无更新、只取部分列的查询。