1

这个问题说明lz4压缩格式是可拆分的,适合在hdfs中使用。好的,我已将 1.5 Gb 数据压缩到 300 Mb lz4 文件中。如果我尝试通过 spark 读取此文件 - 它可以创建的最大工人数是多少以并行读取文件?可拆分部分是否取决于 lz4 压缩级别?

4

2 回答 2

0

压缩不会影响可拆分件数

如果输入文件被压缩,那么从 HDFS 读取的字节数会减少,这意味着读取数据的时间会更短。这种时间节约有利于作业执行的性能。

于 2018-03-15T07:53:53.933 回答
-1

可拆分的压缩编解码器在 Hadoop 处理中绝对重要和重要。我不同意前面的答案。当您说可拆分时,它本质上意味着您可以拥有一个映射程序,该程序可以读取逻辑拆分并处理数据,而无需担心使用某些压缩算法存储在数据节点集群中其他地方的拆分的其他部分。

例如,考虑一下您的 Windows zip 文件。如果我有 10 GB 的文件并计划以每个 100 MB 的最大拆分大小进行压缩,那么我可能会创建 10 个每个 100 MB 的文件(总共压缩到 1 GB)。您能否编写一个程序来处理文件的一部分,而不会将整个文件解压缩回其原始状态。这是 hadoop 上下文中可拆分和不可拆分压缩编解码器之间的区别。例如,.gz 是不可拆分的,而 bzip2 是可能的。即使您在 Hadoop 中有一个 .gz 文件,您也必须首先在您的数据节点上解压缩整个文件,然后针对单个文件运行程序。这效率不高,并且没有使用 Hadoop 并行性的强大功能。

很多人在将压缩文件拆分为 Windows 或 linux 中的多个部分与使用压缩编解码器在 hadoop 中拆分文件之间感到困惑。

让我们回到讨论为什么压缩与拆分很重要。Hadoop 本质上依赖于映射器和缩减器,每个映射器都可以在文件的逻辑拆分(而不是物理块)上工作。如果我在没有可拆分性的情况下存储了文件,那么映射器必须首先解压缩整个文件,然后再对该记录执行任何操作。

因此请注意,输入拆分与 Hadoop 中的并行处理直接相关。

于 2018-10-24T12:13:03.463 回答