サーバレス コンピュートのベストプラクティス
Databricks上のノートブック、ジョブ、パイプラインにサーバレス コンピュートを使用する場合は、生産性を最大化し、コストを削減し、信頼性を向上させるために、次の推奨事項に従ってください。
サーバレス コンピュートへのワークロードの移行
共有サーバレス コンピュート環境でユーザー コードを確実に分離するために、 Databricks Lakeguardを利用してユーザー コードをSparkエンジンおよび他のユーザーから分離します。
このため、一部のワークロードでは、サーバレス コンピュートの作業を継続するためにコードの変更が必要になります。 制限事項のリストについては、 「サーバレス コンピュートの制限事項」を参照してください。
特定のワークロードは、他のワークロードよりも移行が容易です。 次の要件を満たすワークロードは、最も簡単に移行できます。
- アクセスするデータは、Unity Catalog に保存する必要があります。
- ワークロードは標準のコンピュートと互換性がある必要があります。
- ワークロードは、Databricks Runtime 14.3 以降と互換性がある必要があります。
ワークロードがサーバーレス コンピュートで動作するかどうかをテストするには、 標準 アクセス モードとDatabricks Runtime 14.3 以降を使用して、クラシック コンピュート リソースでワークロードを実行します。 実行が成功した場合、ワークロードは移行の準備が整います。
Databricks 、新しいワークロードを作成するときに、サーバレス コンピュートの互換性を優先することをお勧めします。 コード変更が必要な既存のワークロードについては、通常の開発および保守サイクルの一環として、段階的に移行してください。
Python パッケージのバージョンを指定する
サーバレス コンピュートに移行する場合は、 Pythonパッケージを特定のバージョンにピン留めして、再現可能な環境を確保します。 バージョンを指定しないと、パッケージはサーバーレス環境のバージョンに基づいて異なるバージョンに解決される可能性があり、新しいパッケージのインストールが必要になるため、待ち時間が長くなる可能性があります。
たとえば、 requirements.txtファイルには次のように特定のパッケージ バージョンを含める必要があります。
numpy==2.2.2
pandas==2.2.3
一時的なビューには固有の名前を使用してください
サーバーレス コンピュートは、一時ビューを遅延評価するクライアントサーバー アーキテクチャであるSpark Connect を使用します。 この動作は従来のSparkアーキテクチャとは異なり、ループ内などでコードが同じ一時ビュー名を再利用する場合にエラーが発生する可能性があります。
エラーを避けるため、コード内のすべての一時ビューには一意の名前を使用してください。
ネットワークと接続性
サーバーレス コンピュートは、従来のDatabricksコンピュートをクラウド アカウントのデータ ソースに接続する一般的な方法であるVPCピアリングをサポートしていません。 代替案として、ネットワーク接続構成を使用して、エンドポイント、ファイアウォール、および外部サービスへの接続を管理します。
Amazon S3のようなオブジェクトストレージサービスは、VPCを使用しないリージョンサービスであり、この制限の影響を受けません。
たとえば、外部 VPC の一連の安定した出力 IP を許可リストに追加して、 Databricksサーバーレス コンピュートとの接続を有効にすることができます。 エンタープライズアプリケーション(Salesforceなど)やマネージドデータベース( MySQLなど)に接続するには、 LakeFlow Connect使用します。
サーバレス コンピュートからのアウトバウンド トラフィックを制限および監視するには、ワークスペースの下り制御を構成します。 サーバレス出力制御については、「ネットワーク ポリシーの管理」を参照してください。
サーバレス環境のバージョン
サーバーレス コンピュートは、従来のDatabricks Runtimeバージョンの代わりに環境バージョンを使用します。 これは、ワークロードの互換性を管理する方法の変化を表しています。
- Databricks Runtime アプローチ : ワークロードに特定の Databricks Runtime バージョンを選択し、互換性を維持するためにアップグレードを手動で管理します。
- サーバーレス アプローチ : 環境バージョンに対してコードを記述し、 Databricks基盤となるサーバーを個別にアップグレードします。
環境バージョンでは、ワークロードの互換性が維持される安定したクライアント API が提供され、ワークロードのコード変更を必要とせずに、Databricks がパフォーマンスの向上、セキュリティの強化、バグ修正を独自に提供します。
各環境バージョンには、更新されたシステムライブラリ、機能、およびバグ修正が含まれており、ワークロードとの下位互換性も維持されています。Databricksは、各環境バージョンのリリース日から3年間サポートを提供し、アップグレード計画を立てるための予測可能なライフサイクルを実現します。
サーバーレス ワークロードの環境バージョンを選択するには、 「基本環境の選択」を参照してください。 使用可能な環境バージョンとその機能の詳細については、 「サーバレス環境バージョン」を参照してください。
依存関係を管理する
サーバレスコンピュートはinitスクリプトをサポートしていません。 代わりに、サーバレス環境を使用して、サーバレス ワークロードのライブラリをインストールおよび管理します。 環境はインストール済みのパッケージをキャッシュするため、以降の実行時の起動遅延が軽減されます。
プライベートリポジトリのライブラリを使用するには、環境設定で認証済みリポジトリアクセス用の署名付きURLを設定してください。
パフォーマンスモードを選択してください
Databricksサーバーレス コンピュートには、次のように、ワークロードの種類に基づいて速度とコストのバランスをとることができる 2 つのパフォーマンス モードが用意されています。
- パフォーマンス最適化モード (デフォルト):起動時間の短縮が求められる対話型ワークロードに最適です。Databricks 、待機時間を最小限に抑えるために、ウォーム コンピュート リソースのプールを維持します。
- 標準モード :起動に4~6分程度の長い時間を許容できる自動化されたバッチジョブやパイプラインに最適です。標準モードは、パフォーマンス最適化モードと比較して、最大70%のコスト削減が可能です。標準モードは、 LakeFlowジョブとLakeFlow Spark宣言型パイプラインでは利用できますが、ノートブックでは利用できません。
ご自身の作業負荷に最適なモードを選択してください。起動時の遅延がそれほど重要ではないスケジュールされたジョブの場合、通常は標準モードが最もコストパフォーマンスに優れています。最新の価格情報については、 Databricksの価格ページをご覧ください。
ストリーミングワークロードを最適化する
サーバレス コンピュートは、次の点を考慮して構造化ストリーミングをサポートします。
-
Trigger.AvailableNowトリガー モードは、すべてのサーバレス ジョブとパイプラインでサポートされています。 時間ベースのトリガー間隔はサポートされていません。 -
Trigger.AvailableNowを使用する場合、各トリガーはソース内の利用可能なすべてのデータを処理するため、時間ベースのトリガーよりも大きなマイクロバッチが生成される可能性があります。メモリ不足エラーを防ぎ、予測可能なパフォーマンスを維持するために、maxFilesPerTriggerまたはmaxBytesPerTriggerを設定して、マイクロバッチごとに処理されるデータ量を制限します。
サーバレスワークロードをデバッグする
Spark UIサーバレスコンピュートでは利用できません。 代わりに、クエリプロファイルを使用してクエリのパフォーマンスを分析し、ワークロードのトラブルシューティングを行ってください。クエリプロファイルには詳細な実行情報が含まれており、Databricks UIのクエリ履歴からアクセスできます。
外部システムからのデータの取り込み
データ取り込みに使用できる別の戦略には、次のものがあります。
-
COPY INTOやストリーミングテーブルなどのSQLベースのビルディングブロック。
-
Auto Loader 、新しいデータファイルがクラウドストレージに到着したときに、段階的かつ効率的に処理できます。 「Auto Loaderとは」を参照してください。
-
データ取り込み パートナー ソリューション。Partner Connect を使用してインジェスト パートナーに接続するを参照してください。
-
ファイルを直接アップロードするためのデータ追加 UI。 「Databricks へのファイルのアップロード」を参照してください。
インジェストの代替手段
サーバレス コンピュートを使用する場合、次の機能を使ってデータを移動せずにクエリを実行することもできます。
- データの重複を制限したい場合、または可能な限り最新のデータをクエリしていることを保証する場合、Databricks では Delta Sharing を使用することをお勧めします。 「Delta Sharing とは」を参照してください。
- アドホックなレポート作成や概念実証作業の場合、レイクハウスフェデレーションを使用すると、 Unity Catalogによって管理され、データを移動せずにDatabricksから直接外部データベースにクエリを実行できます。 レイクハウスフェデレーションとは何ですか?を参照してください。 。
これらの機能の 1 つまたは両方を試して、クエリのパフォーマンス要件を満たしているかどうかを確認してください。
サポートされている Spark 構成
サーバレス コンピュートでの Spark の設定を自動化するために、 Databricks ではほとんどの Spark 設定を手動で設定するためのサポートを削除しました。 サポートされている Spark 設定パラメータのリストを表示するには、 サーバレス ノートブックおよびジョブの Spark プロパティの設定を参照してください。
サーバレス コンピュートでのジョブ実行は、サポートされていない Spark 設定を設定すると失敗します。
サーバレス コンピュートのコストを監視する
サーバレス コンピュートのコストを監視するために使用できる機能は複数あります。
-
システムテーブルを使用して、ダッシュボードの作成、アラートの設定、アドホッククエリの実行を行います。 サーバレス コンピュートのコストの監視を参照してください。
-
アカウントで予算アラートを設定します。 「予算の作成と監視」を参照してください。
-
事前設定された使用状況ダッシュボードをインポートします。 使用状況ダッシュボードのインポートを参照してください。