2016-03-26 8 views
0

sparkデータフレーム操作の1つでは、各タスクの入力のサイズ(MB)が大きく異なることがわかりました。いくつかのタスクのサイズはほぼ1GBで、他のタスクは15MBです。入力サイズが大きくなると、エグゼキュータが失われます。各Spark DataFrameパーティションが指定されたサイズ(MB)のデータを超えないようにする方法

spark.yarn.executor.memoryOverheadは、ある時点で動作するように調整しています。しかし、私は、各パーティションのサイズが指定されたサイズ(MB)を超えないように、DataFrameを再パーティション化できる方法があることを知りたいと思います。

答えて

0

パーティション自体が正しくサイズ調整されていることを確認する必要があります。partiion-timeタスクではありませんランタイム/タスク実行時間です。オプションは次のとおりです。

  • パーティションの数を増やします。これは、鈍的な道具/ブルートフォースのアプローチです。入力ソースが何であれ、これが実現可能であったとしても、さらに多くのパーティションが必要になります。しかし、多くの余分なパーティションを処理することは実際にはすべてであり、それはが悪いです。それは処理に追加の時間を追加します。

  • より良いアプローチ。データがどのように分割されているかを慎重に考え、スキューを避けるためにデータを改善することができます。これには、グループ分けを再分割または変更するための追加の処理ステップが必要になる場合があります。

もう一度、これが唯一のタスクの実行時間で修正可能ではありません:それはデータdistributiionの再作業を必要とする - それは、それが送信するために使用するパーティションの形でスパークスケジューラに提示されます労働者に

関連する問題