Sparkステージ高I/O

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

ロングステージI/O

高 I/O とは

I/O列を高いと見なすには、どのくらいのデータが必要ですか? これを理解するには、まず、指定された列のいずれかで最大の数値から始めます。 次に、すべてのワーカー全体の CPU コアの合計数を考慮します。 通常、各コアは毎秒約 3 MB の読み取りと書き込みが可能です。

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

高入力

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

特定のデータを特定したら、読み取りを高速化するためのいくつかのアプローチを次に示します。

  • Delta を使用してください。

  • Photon をお試しください。 これは、特に幅の広いテーブルの場合、読み取り速度に大いに役立ちます。

  • クエリをより選択的にして、多くのデータを読み取る必要がないようにします。

  • データのスキップ をより効果的に行うために 、データのレイアウトを再考してください 。

  • 同じデータを複数回読み取る場合は、 Deltaキャッシュを使用します。

  • 結合を行う場合は、 DFP を機能させることを検討してください。

高出力

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

ハイシャッフル

シャッフルに慣れていない場合は、ここで 学ぶ必要があります。

高 I/O なし

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