Databricks に関する最適化の推奨事項
Databricks は、大規模な ETL 処理からアドホックで対話型のクエリーまで、レイクハウスでのさまざまなワークロードをサポートする多くの最適化を提供します。 これらの最適化の多くは自動的に行われます。 Databricksを使用するだけで、そのメリットが得られます。 さらに、ほとんどの Databricks Runtime 機能には、Databricks でテーブルを作成するために使用される既定のストレージ レイヤーである Delta Lake が必要です。
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 に変更すると、並列操作のスループットが低下する可能性がありますが、読み取りの直列化可能性が必要な場合は必要になることがあります。
ブルーム フィルター インデックス を使用すると、特定の条件に一致するレコードを含まないデータ ファイルがスキャンされる可能性を減らすことができます。