我有一个I / O密集型Spark应用程序,我希望尽可能多地使用资源来写入hdfs。
我已经设置了每次执行
时设置的FAIR池spark.sparkContext.setLocalProperty("spark.scheduler.pool", "writing_pool")
df.insertInto("table")`
这个df已经合并到10个分区,我必须编写100种这样的df(一个超过100个循环)。我并行执行这个循环。
理想情况下,如果我没有错,我必须执行100 x 10个写作任务(1000)。在我的资源设置中,我有200个执行器,每个执行器有4个核心,这意味着我可以并行执行800任务。
当我运行这份工作时,我最多可以看到4个写作工作(每个阶段有15个任务)并行运行。为什么?理论上我不能在完全使用群集的同时运行其中的80个?我在这里缺少一些配置吗?
<allocations>
<pool name="writing_pool">
<schedulingMode>FAIR</schedulingMode>
</pool>
</allocations>