Databricks IDE拡張機能を使ってDatabricks Connectでノートブックセルを実行し、デバッグします

ノートブックを1セルずつまたは全セル同時に実行・デバッグし、Databricks IDE拡張機能のDatabricks Connect統合を使ってVisual Studio CodeのUIで結果を確認できます。 すべてのコードはローカル環境で実行されますが、DataFrame 操作を含むコードはすべて、リモートの Azure Databricks ワークスペース内のクラスターで実行され、実行の応答がローカル環境の呼び出し元に返送されます。 すべてのコードはローカル環境でデバッグされますが、Spark のすべてのコードはリモートの Azure Databricks ワークスペース内のクラスターで引き続き実行されます。 コア Spark エンジン コードをクライアントから直接デバッグすることはできません。

注

この機能は、Databricks Runtime 13.3 以降で動作します。

Databricks IDE拡張機能でノートブックのDatabricks Connect統合を有効にするには、Databricks IDE拡張機能内にDatabricks Connectをインストールする必要があります。 Databricks IDE拡張については「Databricks Connect を使用したデバッグコード」を参照してください。

Python ノートブック のセルの実行

.py 拡張機能を持つファイル名のノートブックの場合、Visual Studio Code IDE でノートブックを開くと、各セルに [セルの実行] ボタン、[上記の実行] ボタン、[セルのデバッグ] ボタンが表示されます。 セルを実行すると、その結果が IDE の別のタブに表示されます。 デバッグすると、デバッグ中のセルに[続行] ボタン、[停止] ボタン、[ステップ オーバー] ボタンが表示されます。 セルをデバッグするときに、変数の状態の監視、呼び出し履歴とデバッグ コンソールの表示などの Visual Studio Code デバッグ機能を使用できます。

.ipynb 拡張機能を持つファイル名を含むノートブックの場合、Visual Studio Code IDE でノートブックを開くと、ノートブックとそのセルに追加機能が表示されます。 [セルの実行] と [ノートブック エディターでコード セルを操作する] を参照してください。

.pyおよび.ipynb拡張子を持つファイル名のノートブック形式の詳細については、「Databricks ノートブックのインポートとエクスポート」を参照してください。

Python Jupyter Notebook セルを実行する

Python Jupyter ノートブック (.ipynb) を実行またはデバッグするには、次のようにします。

  1. プロジェクトで、実行またはデバッグする Python Jupyter ノートブックを開きます。 Python ファイルが Jupyter ノートブック形式で、拡張子が .ipynb であることを確認してください。

    ヒント

    Command Palette から [Create: New Jupyter Notebook](作成: 新しいJupyterノートブック)コマンドを実行すると、新しいPython Jupyterノートブックを作成できます。

  2. すべてのセルをデバッグなしで実行するには、Run All Cells (すべてのセルを実行) をクリックし、対応する個々のセルをデバッグなしで実行するには、Execute Cell (セルの実行) をクリックし、限定されたデバッグとともに個々のセルを 1 行ずつ実行し、可変値を Jupyter パネルに表示するには、Run by Line (行ごとに実行) をクリックします (表示 ビューを開く Jupyter)。

    個々のセル内で完全なデバッグを行うには、ブレークポイントを設定し、セルの [実行] ボタンの横にあるメニューの [セルのデバッグ] をクリックします。

    これらのオプションのいずれかをクリックした後に、不足している Python Jupyter ノートブック パッケージの依存関係をインストールするように求められる場合があります。 クリックしてインストールしてください。

    詳細については、「VS Code での Jupyter ノートブック」を参照してください。

ノートブックグローバル

次のノートブック グローバルも有効になっています。

  • spark: databricks.connect.DatabricksSession のインスタンスを表します。拡張機能から Azure Databricks 認証資格情報を取得して DatabricksSession をインスタンス化するように事前構成されています。 DatabricksSessionがノートブック セルのコードで既にインスタンス化されている場合は、代わりにこのDatabricksSession設定が使用されます。 「Databricks Connect for Python のコード例」を参照してください。

  • udf: pyspark.sql.functions.udf の別名として事前構成されています。これは Python UDF の別名です。 「pyspark.sql.functions.udf」を参照してください。

  • sql: spark.sql の別名として事前構成されています。 spark は、上記のとおり、databricks.connect.DatabricksSession の事前構成済みインスタンスを表します。 「Spark SQL」を参照してください。

  • dbutils: Databricks ユーティリティのインスタンスとして事前構成されています。databricks-sdk からインポートされ、拡張機能から Azure Databricks 認証資格情報を取得してインスタンス化されます。 「Databricks ユーティリティを使用する」を参照してください。

    注

    Databricks Connect を使用するノートブックでは、Databricks Utilities のサブセットのみがサポートされています。

    dbutils.widgetsを有効にするには、まず、ローカル開発マシンのターミナルで次のコマンドを実行して、Databricks SDK for Python をインストールする必要があります。

    pip install 'databricks-sdk[notebook]'
    
  • display: Jupyter 組み込み関数 IPython.display.display の別名として事前構成されています。 「IPython.display.display」を参照してください。

  • displayHTML: dbruntime.display.displayHTML の別名として事前構成されています。これは、display.HTML の ipython の別名です。 「IPython.display.html」を参照してください。

ノートブックマジック

次のノートブック マジックも有効にできます。

  • %fs: dbutils.fs 呼び出しの実行と同じです。 「言語を混在させる」を参照してください。

  • %sh: ローカル コンピューターでセル マジック %%script を使用してコマンドを実行します。 リモートの Azure Databricks ワークスペースでコマンドが実行されることはありません。 「言語を混在させる」を参照してください。

  • %md と %md-sandbox: セル マジック %%markdown を実行します。 「言語を混在させる」を参照してください。

  • %sql: spark.sql を実行します。 「言語を混在させる」を参照してください。

  • %pip: ローカル コンピューターで pip install を実行します。 リモートの Azure Databricks ワークスペースで pip install が実行されることはありません。 %pip コマンドを使用したライブラリの管理を参照してください。

  • %run: 別のノートブックを実行します。 Databricks ノートブックの調整とコードのモジュール化に関する説明を参照してください。

    注

    %runを有効にするには、まず、ローカル開発マシンのターミナルで次のコマンドを実行して nbformat ライブラリをインストールする必要があります。

    pip install nbformat
    

さらに、次のような機能も有効になります。

  • Spark DataFrame は pandas DataFrame に変換され、Jupyter テーブル形式で表示されます。

制限事項

Visual Studio Code のノートブックでセルを実行する場合の制限は次のとおりです。

  • ノートブック マジック %r と %scala はサポートされていないため、呼び出すとエラーが表示されます。 「言語を混在させる」を参照してください。
  • ノートブック マジック %sql では、Show Tables などの一部の DML コマンドがサポートされていません。