繁体   English   中英

给定内核和执行器的数量,如何确定rdd中partd的数量?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM