ワークフローのサーバーレス コンピューティングを使用して Azure Databricks ジョブを実行する

重要

ワークフローのサーバーレス コンピューティングではエグレス トラフィックの制御がサポートされていないため、ジョブはインターネットにフル アクセスできます。

ワークフローのサーバーレス コンピューティングを使うと、インフラストラクチャを構成してデプロイしなくても、Azure Databricks ジョブを実行できます。 サーバーレス コンピューティングでは、ユーザーはデータ処理と分析パイプラインの実装に集中し、ワークロード用のコンピューティングの最適化やスケーリングなどのコンピューティング リソースの管理は、Azure Databricks によって効率的に行われます。 ジョブを実行するコンピューティング リソースでは、自動スケーリングと Photon が自動的に有効になります。

ワークフローのサーバーレス コンピューティングの自動最適化は、ワークロードに基づいてインスタンスの種類、メモリ、処理エンジンなどの適切なリソースを選び、コンピューティングを自動的に最適化します。 自動最適化では、失敗したジョブも自動的に再試行されます。

Databricks は、Databricks Runtime バージョンを自動的にアップグレードして、Azure Databricks ジョブの安定性を確保しながら、プラットフォームに対する機能強化とアップグレードをサポートします。 ワークフローのサーバーレス コンピューティングで使われている現在の Databricks Runtime バージョンについては、「サーバーレス コンピューティングのリリース ノート」をご覧ください。

クラスター作成アクセス許可は必要ないため、すべてのワークスペース ユーザーがサーバーレス コンピューティングを使ってワークフローを実行できます。

この記事では、サーバーレス コンピューティングを使用するジョブを、Azure Databricks ジョブ UI を使って作成して実行する方法について説明します。 サーバーレス コンピューティングを使用するジョブの作成と実行は、Jobs API、Databricks アセット バンドル、Databricks SDK for Python を使って自動化することもできます。

  • ジョブ API を使って、サーバーレス コンピューティングを使用するジョブを作成および実行する方法については、REST API リファレンスの「ジョブ」をご覧ください。
  • Databricks アセット バンドルを使って、サーバーレス コンピューティングを使用するジョブを作成および実行する方法については、「Databricks アセット バンドルを使用して Azure Databricks でジョブを開発する」をご覧ください。
  • Databricks SDK for Python を使って、サーバーレス コンピューティングを使用するジョブを作成および実行する方法については、「Databricks SDK for Python」をご覧ください。

要件

  • Azure Databricks ワークスペースで Unity Catalog が有効になっている必要があります。

  • ワークフローのサーバーレス コンピューティングでは共有アクセス モードが使われるため、ワークロードでこのアクセス モードをサポートする必要があります。

  • Azure Databricks ワークスペースが、サポートされているリージョンに存在する必要があります。 「使用可能な機能」をご覧ください。

  • Azure Databricks アカウントでサーバーレス コンピューティングが有効になっている必要があります。 「サーバーレス コンピューティングを有効にする」をご覧ください。

サーバーレス コンピューティングを使用するジョブを作成する

Note

ワークフローのサーバーレス コンピューティングにより、ワークロードを実行するための十分なリソースが確実にプロビジョニングされるため、大量のメモリを必要とする、または多数のタスクを含む Azure Databricks ジョブを実行するときに、起動時間が長くなる可能性があります。

サーバーレス コンピューティングは、ノートブック、Python スクリプト、dbt、Python wheel のタスクの種類でサポートされています。 既定では、新しいジョブを作成し、これらのサポートされているタスクの種類のいずれかを追加すると、サーバーレス コンピューティングがコンピューティングの種類として選択されます。

サーバーレス タスクを作成する

Databricks では、すべてのジョブ タスクにサーバーレス コンピューティングを使うことをお勧めします。 ジョブのタスクに対して、異なるコンピューティングの種類を指定することもできます。これは、タスクの種類がワークフローのサーバーレス コンピューティングでサポートされていない場合に、必要になることがあります。

サーバーレス コンピューティングを使用するように既存のジョブを構成する

ジョブを編集するときに、サポートされているタスクの種類でサーバーレス コンピューティングを使うように、既存のジョブを切り替えることができます。 サーバーレス コンピューティングに切り替えるには、次のいずれかを行います。

  • [ジョブの詳細] サイド パネルで、[コンピューティング] の下の [スワップ] をクリックして、[新規] をクリックし、設定を入力または更新して、[更新] をクリックします。
  • [コンピューティング] ドロップダウン メニューの [ダウンキャレット] をクリックして、[サーバーレス] を選びます。

タスクをサーバーレス コンピューティングに切り替える

サーバーレス コンピューティングを使用するノートブックをスケジュールする

ジョブ UI を使ってサーバーレス コンピューティングを使用するジョブを作成してスケジュールするだけでなく、Databricks ノートブックから直接サーバーレス コンピューティングを使用するジョブを作成して実行できます。 「スケジュールされたノートブック ジョブの作成と管理」をご覧ください。

Spark 構成パラメータを設定する

サーバーレス コンピューティングで Spark の構成を自動化するために、Databricks では、特定の Spark 構成パラメーターのみの設定が許可されます。 許可されるパラメーターの一覧については、サポートされている Spark 構成パラメーターに関するページを参照してください。

Spark 構成パラメーターはセッション レベルでのみ設定できます。 これを行うには、パラメーターをノートブックで設定し、パラメーターを使用する同じジョブに含まれるタスクにそのノートブックを追加します。 「ノートブックで Apache Spark 構成プロパティを取得して設定する」を参照してください。

環境と依存関係を構成する

サーバーレス コンピューティングを使用してライブラリと依存関係をインストールする方法については、「ノートブックの依存関係をインストールする」を参照してください。

再試行を禁止するようにサーバーレス コンピューティングの自動最適化を構成する

ワークフローのサーバーレス コンピューティングの自動最適化は、ジョブの実行に使われるコンピューティングを自動的に最適化し、失敗したジョブを再試行します。 自動最適化は既定で有効になっており、Databricks では、重要なワークロードが少なくとも 1 回は正常に実行されるように、有効のままにしておくことをお勧めします。 ただし、べき等ではないジョブなど、多くても 1 回しか実行してはならないワークロードがある場合は、タスクを追加または編集するときに自動最適化をオフにできます。

  1. [再試行] の横にある [追加] をクリックします (または、再試行ポリシーが既にある場合は [編集] アイコン)。
  2. [再試行ポリシー] ダイアログで、[サーバーレス自動最適化を有効にする (追加の再試行を含むことができる)] をオフにします。
  3. [Confirm]\(確認\) をクリックします。
  4. タスクを追加している場合は、[タスクの作成] をクリックします。 タスクを編集している場合は、[タスクの保存] をクリックします。

ワークフローのサーバーレス コンピューティングを使用するジョブのコストを監視する

課金対象の使用状況システム テーブルのクエリを実行して、ワークフローのサーバーレス コンピューティングを使用するジョブのコストを監視できます。 このテーブルは、サーバーレスのコストに関するユーザーとワークロードの属性を含むように更新されます。 「課金対象の使用状況システム テーブル リファレンス」を参照してください。

Spark クエリの詳細を表示する

ワークフローのサーバーレス コンピューティングには、メトリックやクエリ プランなど、Spark のステートメントに関する詳細なランタイム情報を表示するための新しいインターフェイスがあります。 サーバーレス コンピューティングでのジョブ実行に含まれる Spark ステートメントに関するクエリ分析情報を表示するには:

  1. サイドバーの [ワークフロー] アイコン [ワークフロー] をクリックします。
  2. [名前] 列で、分析情報を表示するジョブ名をクリックします。
  3. 分析情報を表示する特定の実行をクリックします。
  4. [タスクの実行] サイド パネルの [コンピューティング] セクションで [クエリ履歴] をクリックします。
  5. 自分が行っていたタスクのタスク実行 ID に基づいて事前にフィルター処理された Query History にリダイレクトされます。

クエリ履歴の使用については、「クエリの履歴」をご覧ください。

制限事項

ワークフローのサーバーレス コンピューティングに関する制限の一覧については、サーバーレス コンピューティングのリリース ノートでサーバーレス コンピューティングの制限事項に関する説明をご覧ください。