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