【发布时间】: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