在调用foreachPartitions / mapPartitions时,有两种可能的分配策略:
spark实际使用了哪种策略?
答案 0 :(得分:0)
这个问题没有简单的答案。执行程序的确切分配取决于集群管理器(独立,YARN,Mesos等)以及配置选项的数量,其中一些方法不适用于所有管理器:
spark.deploy.spreadOut
- 循环或整合到最少数量的节点。spark.dynamicAllocation.enabled
- 根据工作量启用分配。spark.speculation
- 为慢任务启用推测执行。这可能会受到数据局部性(进一步受spark.locality.wait
影响)和运行时事件(失败,超时)和应用程序特定参数(如首选位置)和DAG /执行计划(在某些情况下Spark将会影响)的影响更喜欢分区的共址。