ドキュメントの検索
karat

+

K

APIリファレンス ↗
データ統合パイプラインの最適化とビルドパイプラインのデバッグメモリ不足(OOM)エラーのトラブルシューティング
Feedback

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

メモリ不足(OOM)エラーのトラブルシューティング

メモリ不足のエラーは、ジョブで以下のような形で現れることがあります:

  • **「Job aborted due to stage failure」**と表示される
  • **「ExecutorLostFailure」**と表示される
  • **「Spark module died while job [jobID] was using it. (ExitReason: MODULE_UNREACHABLE)」**と表示される

**概要:**これらのエラーメッセージは、ビルドに許可されている最大メモリを超えたことを示しています。これは通常、プラットフォームの欠陥ではなく、プラットフォームに実行を依頼したビルドの問題です。ビルドの実行に必要なメモリを減らすためにいくつかの手順を踏むことができます。

トラブルシューティングの手順:

  • ユーザーの変換が Python や Pandas で書かれている場合:
    • 計算を可能な限り PySpark に移行させ、全体の計算クラスターの力を活用します。生の Python や Pandas でのロジックは、ドライバーの単一のプロセッサで実行され、それはおそらくユーザーのラップトップより遅いでしょう。
  • ユーザーの変換が結合を使用している場合:
    • 'null joins'を探します - 多くの行の値が null の行に結合します。これは結合のメモリ消費を大幅に増加させる可能性があります。これを修正するために、変換または前の変換で問題のある行から null をフィルター処理することができます。
    • 出力データセットの行数を大幅に増加させる結合を探し、これが必要かどうかを確認します。一つのヒントは、データセットのキーごとの行数と結合後の結果行を計算する Analysis を実行することです。
  • 入力データセットのファイルのサイズを確認します (Dataset → Details → Files → Dataset Files)。それらはそれぞれ少なくとも 128MB であるべきです。もし小さすぎる、または大きすぎる場合は、それらを再パーティションする必要があります。
  • 変換を複数の小さな変換に分割します。これは、変換のどの部分が失敗の原因となっているかを特定するのにも役立ちます。
  • 入力データセットから不要な行を削除するか、またはデータセットを事前にフィルター処理して、Spark がメモリに保持する必要のあるデータ量を減らします。
  • 可能であれば、変換のロジックを単純化します。