gpt4 book ai didi

hadoop - 文件压缩格式和容器文件格式

转载 作者:可可西里 更新时间:2023-11-01 14:36:42 24 4
gpt4 key购买 nike

一般来说,任何压缩格式如 Gzip,当与容器文件格式如 avro 和序列(文件格式)一起使用时,将使压缩格式可拆分。

这是否意味着容器格式中的 block 根据首选压缩(如 gzip)或其他方式进行压缩。有人可以解释一下吗?谢谢!

嗯,我认为这个问题需要更新。

更新:

我们是否有直接的方法将不可拆分文件压缩格式(如 Gzip)的大文件转换为可拆分文件(使用容器文件格式,如 Avro、Sequence 或 Parquet)以供 MapReduce 处理?

注意:我并不是要寻求解决方法,例如解压缩文件,然后使用可拆分压缩格式再次压缩数据。

最佳答案

对于序列文件,如果您指定BLOCK 压缩,每个 block 将使用指定的压缩编解码器进行压缩。 block 允许 Hadoop 在 block 级别拆分数据,同时使用压缩(压缩本身不可拆分)并跳过整个 block 而无需解压缩它们。

Hadoop wiki 上描述了其中的大部分内容:https://wiki.apache.org/hadoop/SequenceFile

Block compressed key/value records - both keys and values are collected in 'blocks' separately and compressed. The size of the 'block' is configurable.

对于 Avro,这也非常相似:https://avro.apache.org/docs/1.7.7/spec.html#Object+Container+Files

Objects are stored in blocks that may be compressed. Syncronization markers are used between blocks to permit efficient splitting of files for MapReduce processing.

Thus, each block's binary data can be efficiently extracted or skipped without deserializing the contents.

将数据从一种格式转换为另一种格式的最简单(通常也是最快)的方法是让 MapReduce 为您完成这项工作。在以下示例中:

GZip 文本 -> SequenceFile

您将拥有一个仅使用 TextInputFormat 进行输入和输出 SequenceFileFormat 的 map 作业。通过这种方式,您可以获得文件数量的一对一转换(如果需要更改,请添加减少步骤),如果有大量文件要转换,则可以并行进行转换。

关于hadoop - 文件压缩格式和容器文件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38521638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com