2016-09-29 12 views
1

2つの異なるRDDがあります。私はこれらの2つのrddをzipパーティションに分割したいと思います。その前に、2つのRDDの同じIDを持つパーティションを同じエグゼキュータで維持できることを願って、zipPartitionをシャッフルしません。あなたは、このメソッドを実装する新しいRDDの内側にあなたのRDDをラップする必要がありますSparkで特定のエグゼキュータに1つのパーティションを保持する方法は?

答えて

1

def getPreferredLocations(split: Partition): Seq[String] 

上記の方法は、スケジューラを伝えます - 特定のパーティションを計算する必要があります好ましい位置は何ですか。

[2つのRDDでHashjoinを実行しているときに同様の問題に直面し、ブログを投稿しました。 hereを参照したいと思うかもしれません。]

+0

おかげさまで、私たちは各マシンのIPを事前に知っているはずです。各パーティションのエグゼキュータIDを指定する方法はありますか? – greatji

+0

右には、executorsIdsを取得するためのSparkContextのメソッドがありますが、Sparkローカルです。だから私は本当にこのハックのビット以外の方法はありません。 –

+0

@SachinTyagiについてhttps://spark.apache.org/docs/2.0.0/api/java/org/apache/spark/SparkContext.html#makeRDD(scala.collection.Seq,%20scala.reflect.ClassTag) ?パーティションが特定のノードに配置されることを100%保証しますか? –

関連する問題