Azure Databricks の最適化に関する推奨事項
Azure Databricks は、大規模な ETL 処理からアドホックな対話型クエリまで、レイクハウスのさまざまなワークロードをサポートする多くの最適化を提供しています。 これらの最適化の多くは自動的に行われます。 Azure Databricks を使用するだけで、その利点を得ることができます。 さらに、ほとんどの Databricks Runtime 機能には、Azure Databricks でテーブルを作成するために使用される既定の形式である Delta Lake が必要です。
Azure Databricks は、ほとんどのワークロードを最適化する既定値を構成します。 ただし、場合によっては、構成設定を変更することでパフォーマンスが向上します。
Databricks Runtime のパフォーマンスの強化
注意
最新のパフォーマンスの強化を活用するには、最新の Databricks Runtime を使用します。 ここに記載されているすべての動作は、Databricks Runtime 10.4 LTS 以降では既定で有効になります。
- ディスク キャッシュは、コンピューティング クラスターに接続されているディスク ボリュームにデータを読み込むことで、Parquet データ ファイルに対する繰り返しの読み取りを高速化します。
- 動的なファイルの排除では、クエリ述語と一致するデータ ファイルが含まれていないディレクトリをスキップすることで、クエリのパフォーマンスが向上します。
- 低シャッフル マージでは、
MERGE
操作によって書き換えられたデータ ファイルの数が減り、ZORDER
クラスターを再計算する必要性が軽減されます。 - Apache Spark 3.0 では、アダプティブ クエリの実行が導入され、多くの操作のパフォーマンスが向上しました。
パフォーマンスの強化に関する Databricks の推奨事項
- Azure Databricks のテーブルを複製して、ソース データセットのディープ コピーまたはシャロー コピーを作成できます。
- コストベース オプティマイザーは、テーブルの統計を利用してクエリ パフォーマンスを向上させます。
- Spark SQL を使用すると、文字列を解析せずに JSON 文字列を操作できます。
- 上位の関数は、一般的な Spark 演算子を持たない多くの操作に対して、組み込みの最適化されたパフォーマンスを提供します。 上位の関数では、ユーザー定義関数よりもパフォーマンスが向上します。
- Azure Databricks には、配列、構造体、JSON 文字列など、複雑なデータ型を操作するための多数の組み込み演算子と特別な構文が用意されています。
- 範囲結合の設定を手動で調整できます。 「範囲結合の最適化」」を参照してください。
オプトインの動作
- Azure Databricks では、書き込みのシリアル化可能な分離保証が既定で提供されます。分離レベルをシリアル化可能に変更すると、同時実行操作のスループットが低下する可能性がありますが、読み取りのシリアル化可能性の確保が求められる場合は必要になります。
- ブルーム フィルターのインデックスを使用すると、特定の条件に一致するレコードを含まないデータ ファイルをスキャンする可能性を減らすことができます。