【发布时间】:2019-01-08 18:21:10
【问题描述】:
我有一个文件夹,里面有 14 个文件。我在一个集群上使用 10 个执行器运行 spark-submit,它的资源管理器为 yarn。
我这样创建我的第一个 RDD:
JavaPairRDD<String,String> files = sc.wholeTextFiles(folderPath.toString(), 10);
但是,files.getNumPartitions()随机给我 7 或 8 个。然后我不在任何地方使用合并/重新分区,我用 7-8 个分区完成了我的 DAG。
据我所知,我们给出的参数是“最小”分区数,那么为什么 Spark 将我的 RDD 划分为 7-8 个分区?
我也用 20 个分区运行相同的程序,它给了我 11 个分区。
我在这里看到了一个话题,但它是关于“更多”分区的,这对我没有任何帮助。
注意:在程序中,我读取了另一个包含 10 个文件的文件夹,Spark 成功创建了 10 个分区。在这个成功的工作完成后,我运行上述有问题的转换。
文件大小: 1)25.07 KB 2)46.61 KB 3)126.34 KB 4)158.15 KB 5)169.21 KB 6)16.03 KB 7)67.41 KB 8)60.84 KB 9)70.83 KB 10)87.94 KB 11)99.29 KB 12)120.58 KB 13)170.43 KB 14)183.87 KB
文件在 HDFS 上,块大小为 128MB,复制因子 3。
【问题讨论】:
标签: apache-spark hdfs hadoop-yarn distributed-computing partitioning