ワークフローのサーバーレス コンピューティングを使用して 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 のリージョン」を参照してください。

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

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

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

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

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

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

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

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

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

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

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

次の Spark 構成パラメータは、セッション レベルでのみ、ジョブの一部であるノートブックで設定できます。 「ノートブックで Apache Spark 構成プロパティを取得して設定する」を参照してください。

  • spark.sql.legacy.timeParserPolicy
  • spark.sql.session.timeZone

ノートブックの環境と依存関係を構成する

ノートブック タスクに関するライブラリの依存関係と環境の構成を管理するには、ノートブックのセルに構成を追加します。 次の例では、pip install を使ってワークスペース ファイルと requirements.txt ファイルから Python ライブラリをインストールし、spark.sql.session.timeZone セッション変数を設定しています。

%pip install -r ./requirements.txt
%pip install simplejson
%pip install /Volumes/my/python.whl
%pip install /Workspace/my/python.whl
%pip install https://some-distro.net/popular.whl
spark.conf.set('spark.sql.session.timeZone', 'Europe/Amsterdam')

複数のノートブックに同じ環境を設定するには、1 つのノートブックを使って環境を構成してから、%run マジック コマンドを使って、環境構成を必要とする任意のノートブックからそのノートブックを実行できます。 「%run を使用してノートブックをインポートする」をご覧ください。

ノートブック以外のタスクの環境と依存関係を構成する

Python スクリプト、Python wheel、dbt タスクなど、サポートされているその他のタスクの種類の場合は、既定の環境にインストール済みの Python ライブラリが含まれます。 インストールされているライブラリの一覧を確認するには、ワークフローのサーバーレス コンピューティングのデプロイの基になっている Databricks Runtime バージョンのリリース ノートで、「インストールされている Python ライブラリ」セクションをご覧ください。 ワークフローのサーバーレス コンピューティングで使われている現在の Databricks Runtime バージョンについては、「サーバーレス コンピューティングのリリース ノート」をご覧ください。 インストールされていないライブラリがタスクで必要な場合は、Python ライブラリをインストールすることもできます。 Python ライブラリは、ワークスペース ファイル、Unity Catalog ボリューム、またはパブリック パッケージ リポジトリからインストールできます。 タスクを作成または編集するときにライブラリを追加するには:

  1. [環境とライブラリ] ドロップダウン メニューで、[既定] 環境の横にある [編集] アイコン をクリックするか、[+ 新しい環境を追加する] をクリックします。

    既定の環境を編集する

  2. [環境の構成] ダイアログで、[+ ライブラリの追加] をクリックします。

  3. [ライブラリ] のドロップダウン メニューから依存関係の種類を選びます。

  4. [ファイル パス] テキスト ボックスに、ライブラリへのパスを入力します。

  • ワークスペース ファイル内の Python Wheel の場合、パスは /Workspace/ で始まる絶対パスである必要があります。

  • Unity Catalog ボリューム内の Python Wheel の場合、パスは /Volumes/<catalog>/<schema>/<volume>/<path>.whl にする必要があります。

  • requirements.txt ファイルの場合は、PyPi を選んで「-r /path/to/requirements.txt」と入力します。

    タスク ライブラリを追加する

  1. [確認] をクリックするか、[+ ライブラリの追加] をクリックして別のライブラリを追加します。
  2. タスクを追加している場合は、[タスクの作成] をクリックします。 タスクを編集している場合は、[タスクの保存] をクリックします。

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

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

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

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

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

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

ワークフローのサーバーレス コンピューティングには、メトリックやクエリ プランなど、Spark のステートメントに関する詳細なランタイム情報を表示するための新しいインターフェイスがあります。 「クエリの分析情報を表示する」をご覧ください。

制限事項

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