【问题标题】:Why increasing NumPartitions while reading a file increases input size than the original file in spark RDD?为什么在读取文件时增加 NumPartitions 会比 spark RDD 中的原始文件增加输入大小?
【发布时间】:2021-04-30 03:55:21
【问题描述】:

我正在使用sc.textFile(<fileName>, 1) 读取一个带有一个分区的小文本文件,我可以看到输入大小与原始文件大小相同。 但是,当将分区增加到 5.sc.textFile(<fileName>, 5) 时,输入大小几乎增加了原始文件大小的 3 倍。 我正在调用 count 操作来启动作业,并且代码正在我的本地机器上运行。

【问题讨论】:

  • 我不确定,但我希望有一些最小读取大小(块大小),这就是为什么你相当小的文件被“过度读取”(即理论上每个任务只会需要读取 3.7kb,但如果最小块大小是,例如,8kb,那么每个任务将必须读取 8k)。当您的输入文件更大时,您是否检查过效果是否同样强烈?我怀疑随着输入文件大小的增加,效果会变小(以输入的百分比表示)。
  • 感谢@JoachimSauer 回来,我认为你是对的,我测试了 348.7 MB 的文件大小,创建了 11 个分区(按照 32MB 块大小)。然后我读取具有 33 个分区的相同文件,我可以看到输入大小为 350.5MB,非常接近实际文件大小。差距已经缩小。对于我之前的情况,即使块大小为 8Kb,理想情况下它也应该具有 ~41Kb 输入大小,但它显示为 55.5Kb.hmm.. 不确定还添加了什么。

标签: apache-spark rdd


【解决方案1】:

正如您所提到的,您的文件很小,并且当您使用较大的部分数量时,元数据显示出显着的效果。如果您尝试使用更大的文件(例如 1G 或更大),您会发现元数据的开销不算什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    相关资源
    最近更新 更多