2017-04-05 1 views
0

MapPartitonでイテレータからイテレータへの変換が使用されている場合、どのようにしてディスクへのデータの流出が可能になりますか? MapPartitionはメモリ内の全パーティションを処理する必要があると理解していますが、Iterator-to-Iteratorを使用すると、MapPartitonがmemmory内のパーティション全体を必要としているにも関わらず、データをディスクに流すことができます。SparkのIteratorからIteratorへの変換で、Sparkのディスクにデータを流すことができますか?

答えて

0

これは、MapPartitionがメモリ内に完全なデータを必要とするという誤った考えです。

MapPartitionは、マップと同じように、一度に1つのパーティションに対して異なる動作をします。

  1. 連続して1レコードを読み込みます。
  2. すべてのレコードを処理したら戻ってきます。

http://bytepadding.com/big-data/spark/spark-map-vs-mappartitions/

+0

私はMapPartitionは、メモリ内の全データを必要とするが、それはメモリに(その時には、作業するパーティション)を合わせて全体のパーティションを必要としていることを言いませんでした。リンクhttps://issues.apache.org/jira/browse/SPARK-983を参照してください。 – jack

+0

パーティションが大きく、この問題の処理方法よりもメモリに収まらない場合。 High Performance Sparkを読むと、Iterator-to-Iterator変換はデータをディスクに流すのに役立ちます。私の質問は、MapPartitionがmemorory内のパーティション全体を必要としている間に、IteratorからIteratorへの変換(MapPartition内で宣言されたとき)がディスクに流出する可能性があることです。 – jack

関連する問題