[英]How to determine number of partitons of rdd in spark given the number of cores and executors ?
具有20个执行程序的10个节点的群集的分区数目是多少,读取具有100个文件的文件夹的代码将是多少?
在您运行的不同模式下它有所不同,您可以使用spark.default.parallelism
设置对其进行调整。 从Spark文档:
对于没有父RDD的并行化操作,它取决于集群管理器:
Local mode: number of cores on the local machine Mesos fine grained mode: 8 Others: total number of cores on all executor nodes or 2, whichever is larger
链接到相关文档: http : //spark.apache.org/docs/latest/configuration.html#execution-behavior
您可以根据要读取的数据自行更改分区数。某些Spark API提供了分区数的其他设置。
进一步检查要创建多少个分区,就像@Sandeep Purohit所说的那样
rdd.getNumPartitions
这将导致要创建的分区数量!
您还可以通过使用两个Api来更改分区后的分区数量: 合并和重新分区
链接到Coalesce和Repartition: Spark-repartition()vs Coalesce ()
从Spark文档:
默认情况下,Spark为文件的每个块创建一个分区(HDFS中的块默认为64MB),但是您也可以通过传递更大的值来请求更大数量的分区。 请注意,分区不能少于块。
分区数还取决于文件的大小。 如果文件太大,则可以选择具有更多分区。
scala / java对象RDD的分区数将取决于计算机的核心,如果您使用Hadoop输入文件创建RDD,则它将取决于hdfs的块大小(取决于版本),您可以找到分区数在RDD中如下
rdd.getNumPartitions
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.