2017-10-16 14 views
0

おはよう。タスクのシリアル化された結果の合計サイズがspark.driver.maxResultSizeより大きい

一部のログファイルを解析するための開発コードを実行しています。少ないファイルを解析しようとすると、コードがスムーズに実行されます。しかし、解析する必要があるログファイルの数を増やすと、too many open filesTotal size of serialized results of tasks is bigger than spark.driver.maxResultSizeのような異なるエラーが返されます。

spark.driver.maxResultSizeを増やそうとしましたが、エラーは引き続き発生します。

この問題の解決方法を教えてください。

ありがとうございました。

Sample Error

+0

私の場合、maxResultSizeを必要以上に1ギガビットに増やして問題を解決しました。タスクのサイズは5 GBです。あなたは一度6ギガバイトを与えることができますか? –

+0

コードを表示してください... –

答えて

0

Total size of serialized results of tasks is bigger than spark.driver.maxResultSize executorがドライバーにその結果を送信しようとしたとき、それはspark.driver.maxResultSizeを超えたことを意味します。可能な解決策は、あなたがそれを働かせるまで(それがエグゼキュータがあまりにも多くのデータを送信しようとしている場合に推奨される解決策ではありません)、それを増やし続けるために@mayankアグラムによって上で述べたとおりです。

あなたのコードを調べて、エグゼキュータの1人に大量のデータを出し入れするようなデータが歪んでいるかどうかを確認することをお勧めします。データが歪んでいる場合は、repartitioningを試すことができます。

オープンファイルの問題が多すぎると、Sparkがシャッフルの前に中間ファイルの数を作成している可能性があります。エグゼキュータ/高並列処理やユニークキーで使用されているコアが多すぎると発生する可能性があります(可能性が高い原因 - 膨大な数の入力ファイル)。見て一つの解決策は、このフラグを介して中間ファイルの膨大な数を統合されています--conf spark.shuffle.consolidateFiles=true(あなたが​​を行うとき)

確認するもう一つは、このスレッドがある(もし、あなたのユースケースに似ている何か):https://issues.apache.org/jira/browse/SPARK-12837

関連する問題