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