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