次の方法で共有


Spark ステージの高 I/O

次に、最も長いステージの I/O 統計をもう一度確認します。

長いステージ I/O

高 I/O とは

高いと見なされるためには、I/O 列にどのくらいのデータが必要でしょうか? これを理解するには、まず、指定された列の中で最も大きい数値から始めます。 次に、すべてのワーカーに対して持っている CPU コアの合計数を検討します。 通常、各コアは 1 秒あたり約 3 MB の読み取りと書き込みを行うことができます。

最大の I/O 列をクラスター ワーカー コアの数で除算し、それを期間 (秒) で除算します。 結果が約 3 MB の場合は、おそらく I/O バウンドの状態です。 これが高い I/O になります。

高入力

ステージに多くの入力が表示される場合は、データの読み取りに多くの時間を費やしていることを意味します。 まず、このステージで読み取っているデータを特定します。 Spark の DAG での高価な読み取りの識別に関する説明を参照してください。

特定のデータを識別した後、読み取りを高速化するための方法をいくつか次に示します。

  • Delta を使用します。
  • Photon を試します。 これは、特に幅の広いテーブルの場合に、読み取り速度に大いに役立つ可能性があります。
  • クエリの選択性を高めて、できるだけ多くのデータを読み取る必要がないようにします。
  • データのスキップがより効果的になるように、データ レイアウトを再考します。
  • 同じデータを複数回読み取る場合は、Delta キャッシュを使用します。
  • 結合を行っている場合は、DFP の使用を検討します。

高出力

ステージからの出力が多い場合は、データの書き込みに多くの時間が費やされていることを意味します。 これを解決するためのいくつかの方法を次に示します。

高シャッフル

シャッフルに慣れていない場合は、ここで学習します。

高 I/O なし

どの列にも高い I/O が表示されない場合は、さらに詳しく調べる必要があります。 I/O が少ない低速 Spark ステージの説明を参照してください。