我试图了解如何改进(或增加)针对特定火花作业运行的任务的并行性。 这是我的观察......
scala> spark.read.parquet("hdfs://somefile").toJavaRDD.partitions.size()
25
$ hadoop fs -ls hdfs://somefile | grep 'part-r' | wc -l
200
$ hadoop fs -du -h -s hdfs://somefile
2.2 G
我注意到,根据重新分区/合并的内容,在保存操作期间适当地创建了部件文件到HDFS的数量。这意味着可以根据此参数调整零件文件的数量。
但是,如何控制阅读' partitions.size()'?意思是,我希望将其设置为200(无需在读取操作期间对其进行重新分区,这样我就可以为此作业运行更多的任务) 这对于在此作业上执行查询操作所花费的时间具有重大影响。
另一方面,我知道上面2.2 G的200个镶木地板零件文件似乎超过128 MB的块大小。理想情况下应该是18份左右。
请建议。