写点什么

大数据培训 hive 数仓存储格式详解

作者:@零度
  • 2022 年 3 月 18 日
  • 本文字数:1448 字

    阅读完需:约 5 分钟

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 基于列存储。

行存储和列存储



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

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

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

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

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 等特性。

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

文章来源于 robin

用户头像

@零度

关注

关注尚硅谷,轻松学IT 2021.11.23 加入

还未添加个人简介

评论

发布
暂无评论
大数据培训hive数仓存储格式详解_hive_@零度_InfoQ写作平台