サーバレス・コンピュートでワークフロー用のDatabricksジョブを実行する

プレビュー

サーバレス コンピュート for ワークフローはパブリック プレビュー中です。 資格と有効化に関する情報については、 「サーバレス コンピュートのパブリック プレビューを有効にする」を参照してください。

重要

serverless コンピュート for ワークフローのパブリック プレビューでは出力トラフィックの制御がサポートされていないため、ジョブはインターネットに完全にアクセスできます。

サーバレス ワークフローを使用すると、インフラストラクチャを構成および展開せずにDatabricksジョブを実行できます。 サーバーレス コンピュートを使用すると、データ処理および分析パイプラインの実装に集中でき、ワークロードに合わせてコンピュートを最適化およびスケーリングするなど、コンピュート リソースをDatabricksが効率的に管理します。 ジョブを実行するコンピュートリソースに対して、オートスケールとPhotonが自動的に有効になります。

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

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

クラスター作成権限は必要ないため、すべてのワークスペース ユーザーはサーバーレス コンピュートを使用してワークフローを実行できます。

この記事では、 Databricks Jobs UI を使用して、サーバーレス コンピュートを使用するジョブを作成および実行する方法について説明します。 また、Jobs API 、 Databricks Asset Bundles、 Databricks SDK for Pythonを使用して、サーバーレス コンピュートを使用するジョブの作成と実行を自動化することもできます。

  • JobsAPI を使用して、サーバレス コンピュートを使用するジョブを作成および実行する方法の詳細については、 リファレンスの 「Jobs」 RESTAPIを参照してください。

  • Databricks Asset Bundles を使用して、サーバーレス コンピュートを使用するジョブを作成および実行する方法の詳細については、 「 Databricks Asset Bundles を使用してDatabricksでジョブを開発する」を参照してください。

  • Databricks SDK for Pythonを使用して、サーバーレス コンピュートを使用するジョブを作成および実行する方法については、 Databricks SDK for Pythonを参照してください。

要件

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

  • serverless Conpute for ワークフローは共有アクセス モードを使用するため、ワークロードはこのアクセス モードをサポートする必要があります。

  • Databricks ワークスペースはサポートされているリージョン内に存在する必要があります。 Databricks のクラウドとリージョンを参照してください。

サーバーレスコンピュートを使用してジョブを作成する

サーバレス コンピュート は、 デル、 Pythonスクリプト、 dbt 、およびPython wheelタスク タイプでサポートされています。 デフォルトでは、新しいジョブを作成し、サポートされているタスク タイプのいずれかを追加するときに、サーバレス コンピュート がコンピュート タイプとして選択されます。

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

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

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

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

  • ジョブ詳細サイドパネルで、コンピュートの下のスワップをクリックし、新規をクリックして、設定を入力または更新し、更新をクリックします。

  • クリックダウンキャレット[コンピュート]ドロップダウン メニューで、 [サーバレス]を選択します。

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

サーバーレスコンピュートを使用してコンピューターをスケジュールする

ジョブ UI を使用してサーバレス コンピュートを使用したジョブを作成およびスケジュールするだけでなく、 Databricksダッシュボードから直接サーバレス コンピュートを使用したジョブを作成して実行することもできます。 「スケジュールされたノートブック ジョブの作成と管理」を参照してください。

Spark構成を設定する

ジョブの一部である ユーザー名 に設定することで、次のSpark構成をセッション レベルでのみ設定できます。 「ノートブックで Apache Spark 構成プロパティを取得および設定する」を参照してください。

  • spark.sql.legacy.timeParserPolicy

  • spark.sql.session.timeZone

  • spark.sql.shuffle.partitions

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

ノートブック タスクのライブラリ依存関係と環境構成を管理するには、ノートブックのセルに構成を追加します。 次の例では、ワークスペース ファイルから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')

複数の ドイツ語 にわたって同じ環境を設定するには、単一の ドイツ語 を使用して環境を構成し、次に%runマジック コマンドを使用して、環境構成を必要とする任意の ドイツ語 からその ドイツ語 を実行します。 「%run を使用してノートブックをインポートする」を参照してください。

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

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

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

    デフォルト環境を編集する
  2. 環境の設定ダイアログで、 + ライブラリの追加をクリックします。

  3. ライブラリの下のドロップダウン メニューから依存関係のタイプを選択します。

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

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

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

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

    タスクライブラリを追加する
  1. 別のライブラリを追加するには、 「確認」または「 + ライブラリの追加」をクリックします。

  2. タスクを追加する場合は、 「タスクの作成」をクリックします。 タスクを編集している場合は、 「タスクを保存」をクリックします。

サーバレスコンピュートの自動最適化を設定して再試行を禁止する

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

  1. 再試行の横にある追加(または編集アイコン(再試行ポリシーがすでに存在する場合)。

  2. [再試行ポリシー]ダイアログで、 [サーバーレス自動最適化を有効にする (追加の再試行が含まれる場合があります)]のチェックを外します。

  3. 「確認」をクリックします。

  4. タスクを追加する場合は、 「タスクの作成」をクリックします。 タスクを編集している場合は、 「タスクを保存」をクリックします。

サーバレスコンピュートを使用したワークフローのコストを監視する

課金利用システムテーブルを照会することで、サーバレス コンピュートを使用したワークフローのジョブのコストを監視できます。 この表は、サーバーレス コストに関するユーザーおよびワークロード属性を含めるように更新されます。 課金利用システムテーブルリファレンスを参照してください。

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

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

  1. サイドバーのジョブアイコンワークフロー]をクリックします。

  2. 「名前」列で、知見を表示するジョブ名をクリックします。

  3. 知見を表示したい特定の実行をクリックします。

  4. タスク実行サイド パネルの [クエリ履歴] セクションで、 [クエリ履歴]をクリックします。

  5. 参加していたタスクのタスク実行 ID に基づいて事前にフィルタリングされたクエリ履歴にリダイレクトされます。

クエリ履歴の使用に関する情報については、 「クエリ履歴」を参照してください。

制限事項

ワークフローの制限事項の一覧については、 serverless コンピュート リリースノートの「serverless コンピュート 制限事項」を参照してください。