【发布时间】:2014-07-21 17:24:35
【问题描述】:
在 Spark 中,无论是 SparkContext 还是 JavaSparkContext, 当您调用 sc.textFile 时,有一个参数是 minPartitions。这个参数是什么意思?
【问题讨论】:
标签: apache-spark
在 Spark 中,无论是 SparkContext 还是 JavaSparkContext, 当您调用 sc.textFile 时,有一个参数是 minPartitions。这个参数是什么意思?
【问题讨论】:
标签: apache-spark
minPartitions 将传递给 Hadoop 的 InputFormat.getSplits。该参数是一个提示,因此您可能会获得更多或更少的分区,具体取决于 Hadoop InputFormat 实现。
【讨论】:
minPartitions 是什么,您都会得到 5 个拆分。 Spark 为每个拆分创建一个分区。 (RDD 由分区组成。)然后当你在这个 RDD 上运行作业时,将为每个分区创建一个任务。每个工作节点运行一个执行器。如果一个 executor 有 N 个核,它会一次选择 N 个任务并并行处理它们。当一个任务完成后,如果还有剩余的,executor 会接更多的任务。
minPartitions 参数提供给 Hadoop 的 InputFormat.getSplits。如果getSplits 忽略它并返回更小或更大数量的拆分,那么您将拥有更小或更大数量的分区。我实际上不知道 HDFS InputFormat 对这个提示做了什么,抱歉。分区数建议为 CPU 总数的 3-4 倍。