Databricks ノートブックでコードを開発する

このページでは、コードの書式設定、オートコンプリート、言語の混在、マジック コマンドなど、Databricks ノートブックでコードを開発する方法について説明します。

オートコンプリート、変数の選択、マルチカーソルのサポート、並列比較など、エディターで使用できる高度な機能の詳細については、「Databricks ノートブックとファイルエディター」をご覧ください。

ノートブックまたはファイル エディターを使用すると、Genie Code を使用してコードの生成、説明、デバッグを行うことができます。 詳細については、「 Genie Code の使用 」を参照してください。

Databricks ノートブックには、Python ノートブック用の対話型デバッガーも組み込まれています。 「ノートブックのデバッグ」を参照してください。

重要

オートコンプリート、Python コードの書式設定、デバッガーなどのコード 支援機能のために、ノートブックをアクティブな compute セッションにアタッチする必要があります。

コードをモジュール化する

Databricks Runtime 11.3 LTS 以降では、Azure Databricks ワークスペースでソース コード ファイルを作成および管理し、必要に応じてこれらのファイルをノートブックにインポートできます。

ソース コード ファイルの操作の詳細については、「 Databricks NotebooksWork with Python and R modules の間でコードを共有する」を参照してください。

コード セルの書式設定

Azure Databricksには、ノートブック セルのPythonと SQL コードを書式設定できるツールが用意されています。 これらのツールを使用すると、コードが書式設定された状態を維持するための労力が減り、同じコーディング標準を自分のすべてのノートブックに適用するのに役立ちます。

Python ブラック フォーマッタ ライブラリ

重要

この機能はパブリック プレビュー段階にあります。

Azure Databricksでは、ノートブック内で black を使用したPythonコードの書式設定がサポートされます。 ノートブックは、blacktokenize-rt Python パッケージがインストールされているクラスターにアタッチされている必要があります。

Databricks Runtime 11.3 LTS 以降では、Azure Databricksは blacktokenize-rt をプレインストールします。 これらのライブラリをインストールしなくても、フォーマッタを直接使用できます。

Databricks Runtime 10.4 LTS 以下では、ノートブックまたはクラスターで Python フォーマッタを使用するには、PyPI から black==22.3.0 および tokenize-rt==4.2.1 をインストールする必要があります。 ノートブックで次のコマンドを実行できます:

%pip install black==22.3.0 tokenize-rt==4.2.1

または、ライブラリをクラスターにインストールします。

ライブラリのインストールの詳細については、Python環境管理を参照してください。

Databricks Git フォルダー内のファイルとノートブックの場合は、pyproject.toml ファイルに基づいて Python フォーマッタを構成できます。 この機能を使用するには、Git フォルダー ルート ディレクトリに pyproject.toml ファイルを作成し、Black 構成形式に従って構成します。 ファイルの [tool.black] セクションを編集します。 構成は、その Git フォルダー内の任意のファイルとノートブックの書式を設定する際に適用されます。

Pythonセルと SQL セルの書式を設定する方法

コードを書式設定するには、そのノートブックに対する編集可能アクセス許可が必要です。

Azure Databricksでは、カスタム SQL フォーマッタを使用して SQL と black コード フォーマッタをPythonに書式設定します。

書式指定ツールを起動するには、次の方法があります。

  • 1 つのセルを書式設定する

    • キーボード ショートカット: Cmd + Shift + F キーを押します。
    • コマンド コンテキスト メニュー:
      • SQL セルの書式設定: SQL セルのコマンド コンテキスト ドロップダウン メニューで [SQL の書式設定] を選択します。 このメニュー項目は、SQL ノートブックのセルまたは %sql言語マジックがあるセル内でのみ表示されます。
      • Pythonセルのコマンドコンテキストドロップダウンメニューで「Format Python」を選択します。 このメニュー項目は、Pythonノートブックのセル、または%pythonlanguage magicを含むセルでのみ表示されます。
    • Notebook Edit メニュー: Pythonまたは SQL セルを選択し、Edit > Format Cell(s) を選択します。
  • 複数のセルを書式設定する

    複数のセルを選択した後、書式設定のセルを>編集を選択します。 複数の言語のセルを選択すると、SQL セルと Python セルのみが書式設定されます。 これには、%sql%python を使用するものも含まれます。

  • ノートブック内のすべてのPythonと SQL セルを書式設定します

    [編集] > [ノートブックの書式設定] を選択します。 ノートブックに複数の言語が含まれている場合は、SQL セルと Python セルのみが書式設定されます。 これには、%sql%python を使用するものも含まれます。

SQL クエリの書式設定方法をカスタマイズするには、「 カスタム形式の SQL ステートメント」を参照してください。

コードの書式設定の制限事項

  • Black では、4 スペースインデントに対して PEP 8 標準が適用されます。 インデントは設定できません。
  • SQL UDF 内の埋め込みPython文字列の書式設定はサポートされていません。 同様に、Python UDF 内の SQL 文字列の書式設定はサポートされていません。

ノートブックのコード言語

既定の言語を設定する

ノートブックの既定の言語は、ノートブック名の下に表示されます。

Notebook の既定の言語

既定の言語を変更するには、言語ボタンをクリックし、ドロップダウン メニューから新しい言語を選択します。 既存のコマンドを引き続き確実に機能させるために、前の既定の言語のコマンドには、その先頭に言語マジック コマンドが自動的に付加されます。

言語を混在させる

既定では、ノートブックの既定の言語がセルに使用されます。 セル内で既定の言語以外の言語を使用するには、言語ボタンをクリックしてドロップダウン メニューから言語を選択します。

言語選択ドロップダウン

または、セルの先頭に %<language> 言語マジック コマンドを使用することもできます。 サポートされているマジック コマンドは %python%r%scala%sql です。

注意

言語マジック コマンドを呼び出すと、そのコマンドはノートブックの実行コンテキストの中で REPL にディスパッチされます。 ある言語で定義された (したがって、その言語の REPL 内で定義された) 変数を、別の言語の REPL の中で使用することはできません。 REPL どうしが状態を共有するには、外部リソース (たとえば DBFS 内のファイルやオブジェクト ストレージ内のオブジェクト) を介する以外に方法はありません。

ノートブックでは、いくつかの補助マジック コマンドもサポートされています。

  • %sh: シェル コードをノートブック内で実行できます。 シェル コマンドの終了状態が 0 以外の場合にセルを異常終了させるには、-e オプションを追加します。 このコマンドは Apache Spark ドライバー上でのみ実行され、ワーカーでは実行されません。 シェル コマンドをすべてのノードで実行するには、初期化スクリプトを使用します。
  • %fs: dbutils のファイルシステム コマンドを使用できます。 たとえば、dbutils.fs.ls コマンドを実行してファイルを一覧表示するには、代わりに %fs ls を指定します。 詳細については、「work with files on Azure Databricks」を参照してください。
  • %md: テキスト、画像、数式や方程式など、さまざまな種類のドキュメントを含めることができます。 次のセクションを参照してください。

Python コマンドでの SQL 構文の強調表示とオートコンプリート

構文の強調表示と SQL autocomplete は、spark.sql コマンドなど、Python コマンド内で SQL を使用する場合に使用できます。

SQL セルの結果を調べる

Databricks ノートブックでは、SQL 言語セルからの結果は、変数 _sqldfに割り当てられた暗黙的な DataFrame として自動的に使用できるようになります。 この変数は、ノートブック内での位置に関係なく、後で実行する任意のPythonおよび SQL セルで使用できます。

注意

この機能には次の制限があります。

  • _sqldf変数は、コンピューティングにSQL ウェアハウスを使用するノートブックでは使用できません。
  • 後続の Python セルで _sqldf を使用することは、Databricks Runtime 13.3 以降でサポートされています。
  • 後続の SQL セルでの _sqldf の使用は、Databricks Runtime 14.3 以降でのみサポートされています。
  • クエリでキーワード CACHE TABLE または UNCACHE TABLEを使用する場合、 _sqldf 変数は使用できません。

次のスクリーンショットは、後続の Python セルと SQL セルで _sqldf を使用する方法を示しています。

SQL 結果のデータフレーム

重要

変数 _sqldf は、SQL セルが実行されるたびに再割り当てされます。 特定の DataFrame 結果への参照が失われることを回避するには、次の SQL セルを実行する前に新しい変数名に割り当てます。

Python

new_dataframe_name = _sqldf

SQL

ALTER VIEW _sqldf RENAME TO new_dataframe_name

SQL セルを並列で実行する

コマンドが実行中で、ノートブックが対話型クラスターにアタッチされている間は、現在のコマンドと同時に SQL セルを実行できます。 SQL セルは、新しい、並列のセッションで実行されます。

セルを並列で実行するには:

  1. セルを実行します

  2. [今すぐ実行] をクリックします。 セルは即座に実行されます。

    現在実行中のセルと並列で SQL セルを実行します。

セルは新しいセッションで実行されるため、一時ビュー、UDF、および implicit Python DataFrame (_sqldf) は、並列で実行されるセルではサポートされません。 また、並列実行中は既定のカタログ名とデータベース名が使用されます。 コードが別のカタログまたはデータベースのテーブルを参照している場合は、3 レベルの名前空間 (catalog.schema.table) を使用してテーブル名を指定する必要があります。

SQL ウェアハウスで SQL セルを実行する

SQL 分析用に最適化されたコンピューティングの種類である SQL ウェアハウス上の Databricks ノートブックで SQL コマンドを実行できます。 「SQL ウェアハウスを使用してノートブックを使用する」を参照してください。

マジック コマンドを使用する

Databricks ノートブックでは、一般的なタスクを簡略化するために、標準の構文を超えて機能を拡張するさまざまなマジック コマンドがサポートされています。 ラインマジックには % が付き、1 行に適用されます。 セルマジックには %% が付き、セル本体全体に適用されます。

マジック コマンド 説明
%python %python
print("Hello")
セルの言語をPythonに切り替えます。 セルのPythonコードを実行します。
%r %r
print("Hello")
セルの言語を R に切り替えます。セル内の R コードを実行します。
%scala %scala
println("Hello")
セル言語を Scala に切り替えます。 セル内の Scala コードを実行します。
%sql %sql
SELECT * FROM table
セル言語を SQL に切り替えます。 結果は、Python/SQL セルで _sqldf として使用できます。
%md %md
# Title
Content here
セルの言語を Markdown に切り替えます。 セル内の Markdown コンテンツをレンダリングします。 テキスト、画像、数式、LaTeX をサポートします。
%pip %pip install pandas Python パッケージ (ノートブック スコープ) をインストールします。 「Notebook スコープのPython ライブラリ」を参照。
%run %run /path/to/notebook 別のノートブックを実行し、その関数と変数をインポートします。 Notebook ワークフローを参照してください。
%fs %fs ls /path dbutils ファイルシステム コマンドを実行します。 dbutils.fs コマンドの短縮形。 「ファイルの操作」を参照してください。
%sh %sh ls -la シェル コマンドを実行します。 ドライバー ノードでのみ実行されます。 エラー時に失敗するには、 -e を使用します。
%tensorboard %tensorboard --logdir /logs TensorBoard UI をインラインで表示します。 Databricks ランタイム ML でのみ使用できます。 TensorBoard を参照してください。
%set_cell_max_output_size_in_mb %set_cell_max_output_size_in_mb 10 セルの最大出力サイズを設定します。 範囲: 1 ~ 20 MB。 ノートブック内の後続のすべてのセルに適用されます。
%skip %skip
print("This won't run")
セルの実行をスキップします。 ノートブックの実行時にセルが実行されないようにします。
%%profile %%profile
my_function()
Pythonコード実行をプロファイリングする。 タイミング情報を含む階層型呼び出しツリーを表示します。 Databricks Runtime 17.2 以降が必要です。
%%oprofile %%oprofile
my_function()
セルの実行中にオブジェクトの作成をプロファイルします。 新しく作成された新しいオブジェクトのテーブルを、種類別にグループ化して表示します。 Databricks Runtime 17.2 以降が必要です。

注意

IPython Automagic: Databricks ノートブックでは IPython automagic が既定で有効になっており、 pip などの特定のコマンドを % プレフィックスなしで動作できます。 たとえば、 pip install pandas%pip install pandasと同じように動作します。

重要

  • 変数と状態は、異なる言語の REPL 間で分離されます。 たとえば、scala セルではPython変数にアクセスできません。
  • ノートブック セルには 1 つのセル マジック コマンドしか含めず、セルの最初の行である必要があります。
  • %run は、ノートブック全体をインラインで実行するため、単独でセル内に存在する必要があります。
  • Databricks Runtime 12.2 LTS 以降で %pip を使用する場合は、インストール後にPython状態がリセットされるため、すべてのパッケージ インストール コマンドをノートブックの先頭に配置します。