メインコンテンツまでスキップ

サーバレス コンピュートのベストプラクティス

この記事では、ノートブックとジョブでサーバレス コンピュートを使用するためのベスト プラクティスの推奨事項を示します。

これらの推奨事項に従うことで、Databricks 上のワークロードの生産性、コスト効率、信頼性を向上させることができます。

サーバレス コンピュートへのワークロードの移行

共有サーバレス コンピュート環境でユーザー コードを確実に分離するために、 Databricks Lakeguardを利用してユーザー コードをSparkエンジンおよび他のユーザーから分離します。

このため、一部のワークロードでは、サーバレス コンピュートの作業を継続するためにコードの変更が必要になります。 制限事項のリストについては、 「サーバレス コンピュートの制限事項」を参照してください。

特定のワークロードは、他のワークロードよりも移行が容易です。 次の要件を満たすワークロードは、最も簡単に移行できます。

  • アクセスするデータは、Unity Catalog に保存する必要があります。
  • ワークロードは標準のコンピュートと互換性がある必要があります。
  • ワークロードは、Databricks Runtime 14.3 以降と互換性がある必要があります。

ワークロードがサーバーレス コンピュートで動作するかどうかをテストするには、 標準 アクセス モードとDatabricks Runtime 14.3 以降を使用して、クラシック コンピュート リソースでワークロードを実行します。 実行が成功した場合、ワークロードは移行の準備が整います。

多くの古いワークロードはシームレスに移行しません。Databricks 、すべてを再コーディングするのではなく、新しいワークロードを作成するときに、サーバーレス コンピュートの互換性を優先することをお勧めします。

Python パッケージのバージョンを指定する

サーバレス コンピュートに移行する場合は、 Pythonパッケージを特定のバージョンにピン留めして、再現可能な環境を確保します。 バージョンを指定しないと、パッケージはサーバーレス環境のバージョンに基づいて異なるバージョンに解決される可能性があり、新しいパッケージのインストールが必要になるため、待ち時間が長くなる可能性があります。

たとえば、 requirements.txtファイルには次のように特定のパッケージ バージョンを含める必要があります。

Text
numpy==2.2.2
pandas==2.2.3

外部システムからのデータの取り込み

サーバレス コンピュートは JAR ファイルのインストールをサポートしていないため、 JDBC ドライバや ODBC ドライバを使用して外部データソースからデータを取り込むことはできません。

データ取り込みに使用できる別の戦略には、次のものがあります。

インジェストの代替手段

サーバレス コンピュートを使用する場合、次の機能を使ってデータを移動せずにクエリを実行することもできます。

  • データの重複を制限したい場合、または可能な限り最新のデータをクエリしていることを保証する場合、Databricks では Delta Sharing を使用することをお勧めします。 「Delta Sharing とは」を参照してください。
  • アドホックなレポート作成や概念実証の作業を行いたい場合は、 Databricks は正しい選択、つまりレイクハウスフェデレーションを試すことをお勧めします。 レイクハウスフェデレーションは、データベース全体を外部システムから Databricks に同期することを可能にし、 Unity Catalogによって管理されます。 「レイクハウスフェデレーションとは」を参照してください。

これらの機能の 1 つまたは両方を試して、クエリのパフォーマンス要件を満たしているかどうかを確認してください。

サポートされている Spark 構成

サーバレス コンピュートでの Spark の設定を自動化するために、 Databricks ではほとんどの Spark 設定を手動で設定するためのサポートを削除しました。 サポートされている Spark 設定パラメータのリストを表示するには、 サーバレス ノートブックおよびジョブの Spark プロパティの設定を参照してください。

サーバレス コンピュートでのジョブ実行は、サポートされていない Spark 設定を設定すると失敗します。

サーバレス コンピュートのコストを監視する

サーバレス コンピュートのコストを監視するために使用できる機能は複数あります。