文件压缩格式如何影响我的spark处理

mzillmmw  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(502)

我在理解大数据世界中可拆分和不可拆分的文件格式时感到困惑。我使用的是zip文件格式,我知道zip文件是不可拆分的,当我处理那个文件时,我不得不使用它 ZipFileInputFormat 基本上就是解压然后处理。
然后我搬到 gzip 格式和我能够处理它在我的Spark工作,但我总是有一个疑问,为什么人们说 gzip 文件格式也不可拆分?
它会如何影响我的工作表现?
例如,如果有5k大小不同的gzip文件,有些是1KB,有些是10gb,如果我要在spark中加载,会发生什么?
我应该在我的情况下使用gzip还是任何其他压缩?如果是,那么为什么?
还有性能上有什么不同
案例1:如果我有一个非常大(10gb)的gzip文件,然后我将它加载到spark中并运行count
案例2:如果我有一些相同大小的可拆分(bzip2)文件,然后将其加载到spark并对其运行count

trnvg8h3

trnvg8h31#

首先,您需要记住gzip和zip都是不可拆分的。lzo和bzip2是唯一可拆分的存档格式。snappy也是可拆分的,但它只是一种压缩格式。
在本文中,可拆分文件意味着它们可以在多台计算机上并行处理,而不是只在一台计算机上。
现在,回答你的问题:
如果我有一个非常大(10gb)的gzip文件,然后我将它加载到spark中并运行count
它只由一个执行器上的一个cpu加载,因为该文件是不可拆分的。
(bzip2)相同大小的文件,然后将其加载到spark中并对其运行count
将文件大小除以hdfs块大小,您应该期望所有执行器中的许多内核都在计算该文件的数量
对于任何小于hdfs块大小的文件,没有区别,因为只需计算一个小文件,就需要在一个cpu上消耗整个hdfs块。

相关问题