大数据新人应该了解的Hadoop中的各种文件格式

大数据 Hadoop
几周前,我写了一篇有关Hadoop的文章,并谈到了它的不同部分。 以及它如何在数据工程中扮演重要角色。 在本文中,我将总结Hadoop中不同的文件格式。 本主题将是一个简短而快速的主题。

Hadoop文件格式初学者指南

 

大数据新人应该了解的Hadoop中的各种文件格式

几周前,我写了一篇有关Hadoop的文章,并谈到了它的不同部分。 以及它如何在数据工程中扮演重要角色。 在本文中,我将总结Hadoop中不同的文件格式。 本主题将是一个简短而快速的主题。 如果您想了解Hadoop的工作原理以及它在数据工程师中的重要作用,请在此处访问我关于Hadoop的文章,或乐于跳过。

Hadoop中的文件格式大致分为两类:面向行和面向列:

  • 面向行:在一起存储的同一行数据是连续存储:SequenceFile,MapFile,Avro Datafile。 这样,如果仅需要访问该行的少量数据,则需要将整个行读入存储器。 延迟序列化可以将问题减轻到一定程度,但是无法取消从磁盘读取整行数据的开销。 面向行的存储适用于需要同时处理整行数据的情况。
  • 面向列:整个文件分为几列数据,每列数据存储在一起:Parquet,RCFile,ORCFile。 面向列的格式可以在读取数据时跳过不需要的列,适用于字段中只有一小部分行的情况。 但是这种读取和写入格式需要更多的存储空间,因为高速缓存行需要位于内存中(以获取多行中的一列)。 同时,它不适合流式传输,因为一旦写入失败,就无法恢复当前文件,并且在写入失败时,面向行的数据可以重新同步到最后一个同步点,因此Flume使用 面向行的存储格式。

 

大数据新人应该了解的Hadoop中的各种文件格式

 

大数据新人应该了解的Hadoop中的各种文件格式
> Picture 1.(Left Side )Show the Logical Table and Picture 2. ( Right Side) Row-Oriented Layout(Sequ

 

大数据新人应该了解的Hadoop中的各种文件格式
> Picture 3. Column-oriented Layout (RC File)

如果仍不清楚行和列的方向,请不用担心,您可以访问此链接,了解它们之间的区别。

以下是在Hadoop系统上广泛使用的一些相关文件格式:

序列文件

存储格式取决于是否压缩以及使用记录压缩还是块压缩而有所不同:

 

大数据新人应该了解的Hadoop中的各种文件格式
> The Internal structure of a sequence file with no compression and with record compression.
  • 不压缩:根据记录长度,键长,值程度,键值和值值顺序存储。 范围是字节数。 使用指定的序列化执行序列化。
  • 记录压缩:仅压缩值,并将压缩的编解码器存储在标头中。
  • 块压缩:将多个记录压缩在一起,以利用记录之间的相似性并节省空间。 同步标记被添加在块之前和之后。 该属性的最小值为io.seqfile.compress.blocksizeset。

 

大数据新人应该了解的Hadoop中的各种文件格式
> The internal structure of a sequence file with block compression

地图文件

MapFile是SequenceFile的变体。 将索引添加到SequenceFile并对其进行排序后,它就是MapFile。 索引存储为单独的文件,通常每128条记录存储一个索引。 可以将索引加载到内存中以进行快速查找-存储按Key定义的顺序排列的数据的文件。 MapFile记录必须按顺序编写。 否则,将引发IOException。

MapFile的派生类型:

  • SetFile:一个特殊的MapFile,用于存储可写类型的键序列。 密钥是按顺序写入的。
  • ArrayFile:键是一个整数,表示数组中的位置,值是可写的。
  • BloomMapFile:使用动态Bloom过滤器针对MapFile get()方法进行了优化。 过滤器存储在内存中,并且仅当键值存在时,才会调用常规的get()方法来执行读取操作。

Hadoop系统下面列出的文件包括RCFile,ORCFile和Parquet。 Avro的面向列的版本是Trevni。

RC文件

Hive的Record Columnar File(记录列文件),这种类型的文件首先将数据按行划分为行组,然后在行组内部将数据存储在列中。 其结构如下:

 

大数据新人应该了解的Hadoop中的各种文件格式
> Data Layout of RC File in an HDFS block

与纯面向行和面向列的比较:

 

大数据新人应该了解的Hadoop中的各种文件格式
> Row-Store in an HDFS Block

 

大数据新人应该了解的Hadoop中的各种文件格式
> Column Group in HDFS Block

ORC文件

ORCFile(优化的记录列文件)提供了比RCFile更有效的文件格式。 它在内部将数据划分为默认大小为250M的Stripe。 每个条带均包含索引,数据和页脚。 索引存储每列的最大值和最小值以及列中每一行的位置。

 

大数据新人应该了解的Hadoop中的各种文件格式
> ORC File Layout

在Hive中,以下命令用于使用ORCFile:

CREATE TABLE ...STORED AAS ORC ALTER TABLE ... SET FILEFORMAT ORC SET hive.default.fileformat=ORC

Parquet

一种通用的基于列的存储格式,基于Google的Dremel。 特别擅长处理深度嵌套的数据。

 

大数据新人应该了解的Hadoop中的各种文件格式
> The internal Structure of Parquet File

对于嵌套结构,Parquet会将其转换为平面列存储,该存储由重复级别和定义级别(R和D)表示,并在读取数据以重建整个文件时使用元数据来重建记录。 结构体。 以下是R和D的示例:

AddressBook { contacts: { phoneNumber: "555 987 6543" } contacts: { } } AddressBook { }

 

大数据新人应该了解的Hadoop中的各种文件格式

就这样,现在,您知道了Hadoop中不同的文件格式。 如果您发现任何错误并提出建议,请随时与我联系。 您可以在我的LinkedIn上与我联系。

责任编辑:未丽燕 来源: 今日头条
相关推荐

2012-05-29 09:48:21

Hadoop

2012-05-29 09:06:32

Hadoop文件格式

2017-08-25 17:41:17

Paradox数据文件格式

2019-11-18 09:00:10

大数据数据格式文件格式

2010-08-16 10:26:36

DB2数据库

2010-08-03 15:40:30

NFS文件格式

2017-06-15 10:21:30

Apache Hado存储引擎性能

2021-01-06 13:45:32

大数据语言编程

2016-12-01 14:47:20

2018-03-22 16:32:49

大数据数据集数据处理

2023-12-11 16:36:09

2010-08-02 14:19:28

DB2数据库

2010-11-03 15:15:26

DB2数据移动

2017-06-16 09:58:34

Hive格式压缩算法

2023-11-02 09:54:21

ODT文件

2018-09-13 15:21:54

2021-09-29 15:52:26

计算机配置文件语言

2011-03-03 10:48:36

DB2数据库外部文件

2009-06-02 14:12:26

Hibernate配置文件格式

2010-08-02 11:38:43

DB2外部文件格式
点赞
收藏

51CTO技术栈公众号