データ接続と統合パイプラインの最適化パイプラインのデバッグメモリ不足(OOM)エラーのトラブルシューティング
Warning

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

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

メモリ不足のエラーは、ジョブ内でいくつかの方法で表示される可能性があります:

  • **「ジョブがステージの失敗により中止されました」**と表示される
  • **「ExecutorLostFailure」**と表示される
  • **「ジョブ[jobID]が使用している間にSparkモジュールが死亡しました。(ExitReason:MODULE_UNREACHABLE)」**と表示される
  • ドライバーへの接続が失われたと表示される

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

トラブルシューティングを行うために、以下の手順を実行してください:

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