火花是如何将一个分区分配给执行者的。何时以及如何将火花分配给执行者
当我跑在火花壳以下行1个驱动器和第5个执行人:
> var data = sc.textFile("file") // auto generates 2 partitions
> data.count() // materialize partitions on two nodes
> data = data.repartition(10) // repartition data.count()
> data.count() // 10 partitions still on original 2 nodes
重新分区后,将10个分区仍然位于原始的两个节点上(5分)。这看起来效率很低,因为5个任务在包含分区的每个节点上重复运行,而不是在节点间均匀分布。低效率对于在相同rdds上重复多次的迭代任务是最明显的。
所以我的问题是,火花是如何决定哪个节点具有哪个分区的,有没有办法可以强制数据移动到其他节点?
你说的是两个节点,但你有一个Executor,这没什么意义。他在谈论什么? –
对不起,这是一个错字,刚刚编辑。感谢您指出 – Yituo
您是否遇到Sparks任务分配问题?或者这是一个普遍的问题?每个Executor有多少个内核? –