【发布时间】: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