具有20个执行程序的10个节点集群的分区数和读取包含100个文件的文件夹的代码是什么?
答案 0 :(得分:1)
您运行的不同模式有所不同,您可以使用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来更改分区数量,即:合并和重新分区
指向合并和重新分区的链接:Spark - repartition() vs coalesce()
答案 1 :(得分:0)
来自Spark doc:
默认情况下,Spark为文件的每个块创建一个分区 (默认情况下,HDFS中的块为64MB),但您也可以要求 通过传递更大的值可以获得更高的分区数。请注意你 不能有比分块少的分区。
分区数量还取决于文件的大小。如果文件太大,您可以选择更多分区。
答案 2 :(得分:0)
scala / java对象RDD的分区数量将取决于机器的核心,如果您使用Hadoop输入文件创建RDD,那么它将依赖于您可以找到的hdfs(依赖于版本)的块大小RDD中的分区数如下
<强> rdd.getNumPartitions
强>