次の方法で共有


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

高出力

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

  • 大量のデータを書き直していますか? 「Spark がデータ を書き換えて確認しているかどうかを確認する方法」を参照してください。 大量のデータを書き直す場合:
  • まだ有効になっていない場合は、Photon を有効にします。 Photonは書き込み速度に大いに役立ちます。

高シャッフル

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

高い入出力はありません

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