有20个执行器的10个节点的集群和读100个文件的文件夹的代码的分区数是多少?
utugiqy61#
scala/java对象rdd的分区数将取决于机器的核心,如果您使用hadoop输入文件创建rdd,那么它将取决于hdfs的块大小(取决于版本),您可以在rdd中找到如下分区数 rdd.getNumPartitions
rdd.getNumPartitions
sxpgvts32#
来自spark文档:默认情况下,spark为文件的每个块创建一个分区(hdfs中的块默认为64mb),但是您也可以通过传递更大的值来请求更多的分区。请注意,分区不能少于块。分区的数量还取决于文件的大小。如果文件太大,您可以选择有更多的分区。
k4emjkb13#
它在不同的模式下是不同的,您可以使用 spark.default.parallelism 设置。来自spark文档:对于没有父RDD的并行化等操作,它取决于群集管理器:
spark.default.parallelism
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-行为您可以根据正在读取的数据自行更改分区数。一些spark api提供了分区数的附加设置。要进一步检查创建了多少个分区,请按照@sandeep purohit所说的做rdd.getnumpartitions属性它将导致被创建的分区的数量!您还可以在使用两个api(即:合并和重新分区)创建partiton之后更改partiton的数量链接到合并和重新分区:spark-repartition()vs coalesce()
3条答案
按热度按时间utugiqy61#
scala/java对象rdd的分区数将取决于机器的核心,如果您使用hadoop输入文件创建rdd,那么它将取决于hdfs的块大小(取决于版本),您可以在rdd中找到如下分区数
rdd.getNumPartitions
sxpgvts32#
来自spark文档:
默认情况下,spark为文件的每个块创建一个分区(hdfs中的块默认为64mb),但是您也可以通过传递更大的值来请求更多的分区。请注意,分区不能少于块。
分区的数量还取决于文件的大小。如果文件太大,您可以选择有更多的分区。
k4emjkb13#
它在不同的模式下是不同的,您可以使用
spark.default.parallelism
设置。来自spark文档:对于没有父RDD的并行化等操作,它取决于群集管理器:
相关文档链接:http://spark.apache.org/docs/latest/configuration.html#execution-行为
您可以根据正在读取的数据自行更改分区数。一些spark api提供了分区数的附加设置。
要进一步检查创建了多少个分区,请按照@sandeep purohit所说的做
rdd.getnumpartitions属性
它将导致被创建的分区的数量!
您还可以在使用两个api(即:合并和重新分区)创建partiton之后更改partiton的数量
链接到合并和重新分区:spark-repartition()vs coalesce()