次の方法で共有


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 での高価な読み取りの識別を参照してください。

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

高出力

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

高シャッフル

Databricks では、spark が最適なシャッフル パーティションの数を自動的に選択できるように、 spark.sql.shuffle.partitions=auto を設定することをお勧めします。 シャッフルに慣れていない場合は、ここで 学習します。

高い入出力はありません

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