View a markdown version of this page

Spark コストベースのオプティマイザの使用 - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Spark コストベースのオプティマイザの使用

Spark バージョン 2.09 以降では、コストベースのオプティマイザ (CBO) を使用できます。CBO は、さまざまなテーブル統計に基づいて、クエリの最も安い実行プランを選択します。CBO は CPU 使用率と I/O に関してクエリの実行を最適化しようとするため、できるだけ早く返します。ただし、ほとんどの場合、特に統計収集がデータ処理よりもさらに高価である場合、データ統計は一般的にありません。統計が利用可能であっても、古くなっている可能性があります。CBO を使用する際のベストプラクティスを次に示します。

  • 結合、フィルター、グループバイなどのオペレーションで使用されるすべての列の統計を収集します。これにより、オプティマイザはより良い意思決定を行うことができます。を使用して統計を収集ANALYZE TABLEします。

  • データが急速に変化している場合は、統計収集の頻度を増やします。古い統計では、計画が最適化されない可能性があります。

  • デフォルトの CBO パラメータから開始し、必要な場合にのみチューニングします。積極的な最適化により、ランタイムが増加する可能性があります。

  • 最適化計画を強制してパフォーマンスを比較することで、CBO が最適な計画を選択しているかどうかを検証します。オプティマイザのログ記録を有効にして、プランを比較します。

  • 最適化を向上させるには、パーティショニング、バケット化、データスキューヒントと組み合わせて CBO を使用します。パーティション分割は CBO のスケーリングに役立ちます。

  • 計画の回帰を早期に検出するには、CBO を有効にした後、クエリのパフォーマンスを継続的にモニタリングします。