【问题标题】:Send tasks to specific executors in Spark [duplicate]将任务发送到 Spark 中的特定执行者 [重复]
【发布时间】:2018-11-02 10:37:53
【问题描述】:

我从文件中读取数据到 rdd 并将它们分成三个分区,如下所示:

val rdd=sc.textFile("pathToFile",minPartitions=3)

我使用三个执行器在独立集群上运行应用程序。我的问题是是否有办法将第一个分区发送到 ID=0 的执行程序(或特定的一个)。 例如,我希望按如下方式执行阶段:

任务0-执行者0

任务1-执行者1

任务2-执行者2

相反,由于 spark 将分区发送到“随机”(我知道这不是真正随机的)位置,它最终会像这样:

任务 0-执行者 1

任务1-执行者2

任务2-执行者0

我知道使用makeRDD 时有preferredLocations,但我不知道如何转换我的代码以匹配它。

【问题讨论】:

  • 在我看来像XY problem。 @Valentina,您能解释一下为什么要实现这一目标吗?也许我们可以为您要解决的实际问题找出另一个简单的解决方案。
  • 如@thebluephantom 所述,除非您从链接中使用 Jacek 的方法,否则没有这样的细粒度控制。

标签: scala apache-spark


【解决方案1】:

没有这样的细粒度控制。如果考虑到架构,也不需要。但是,使用自定义分区有一些隐式控制。

【讨论】:

  • 感谢您的回答。请问您知道 Spark 是如何选择任务分配的吗?我真的没有任何方法可以模拟那个任务吗?
  • 这提供了一个很好的概述。 spark.apache.org/docs/latest/cluster-overview.html。如果你能接受答案。
猜你喜欢
  • 1970-01-01
  • 2022-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-02
相关资源
最近更新 更多