gpt4 book ai didi

apache-spark - Spark 是否有关于 RDD 的最佳分区数量及其元素数量的经验法则?

转载 作者:行者123 更新时间:2023-12-04 11:35:27 24 4
gpt4 key购买 nike

RDD 包含的元素数量与其理想的分区数量之间是否存在任何关系?

我有一个具有数千个分区的 RDD(因为我从由多个小文件组成的源文件加载它,这是我无法修复的约束,所以我必须处理它)。我想对其重新分区(或使用 coalesce 方法)。但我事先不知道 RDD 将包含的事件的确切数量。
所以我想以自动化的方式做到这一点。看起来像这样的东西:

val numberOfElements = rdd.count()
val magicNumber = 100000
rdd.coalesce( numberOfElements / magicNumber)

关于 RDD 的最佳分区数量及其元素数量是否有任何经验法则?

谢谢。

最佳答案

没有,因为它高度依赖于应用程序、资源和数据。有一些硬性限制( like various 2GB limits ),但其余的您必须根据任务进行调整。需要考虑的一些因素:

  • 单行/元素的大小
  • 典型操作的成本。如果有小分区并且操作便宜,那么调度成本可能比数据处理成本高得多。
  • 执行分区(例如排序)操作时处理分区的成本。

  • 如果这里的核心问题是一些初始文件,那么使用 CombineFileInputFormat 的一些变体可能比重新分区/合并更好。例如:

    sc.hadoopFile(
    path,
    classOf[CombineTextInputFormat],
    classOf[LongWritable], classOf[Text]
    ).map(_._2.toString)

    另见 How to calculate the best numberOfPartitions for coalesce?

    关于apache-spark - Spark 是否有关于 RDD 的最佳分区数量及其元素数量的经验法则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36009392/

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