Databricks ノートブックでコードを開発する
Databricksこのページでは、オートコンプリート、Python SQLPythonとSQL の自動書式設定、ノートブックでの と の組み合わせ、ノートブックのバージョン履歴の追跡など、 ノートブックでコードを開発する方法について説明します。
オートコンプリート、変数選択、マルチカーソルのサポート、サイド バイ サイド差分など、エディターで使用できる高度な機能の詳細については、「 Databricks ノートブックとファイル エディターの操作」を参照してください。
ノートブックまたはファイルエディターを使用する場合、Databricks Assistant を使用してコードの生成、説明、デバッグを行うことができます。 詳細については、「Databricks Assistantの使用」を参照してください。
Databricks ノートブックには、Python ノートブック用の組み込みの対話型デバッガーも含まれています。 「デバッグ ノートブック」を参照してください。
コードのモジュール化
Databricks Runtime 11.3 LTS 以降では、Databricks ワークスペースでソース コード ファイルを作成および管理し、必要に応じてこれらのファイルをノートブックにインポートできます。
ソース コード ファイルの操作の詳細については、「Databricks ノートブック間でコードを共有する」および「Python モジュールと R モジュールを操作する」を参照してください。
コードセルの書式設定
Databricksは、ノートブックのセル内のPythonおよびSQLコードを迅速かつ簡単にフォーマットできるツールを提供しています。これらのツールは、コードのフォーマットを維持するための労力を軽減し、ノートブック全体に同じコーディング標準を適用するのに役立ちます。
Pythonブラックフォーマッターライブラリ
プレビュー
この機能は パブリック プレビュー段階です。
Databricks では、ノートブック内で 黒 を使用した Python コードの書式設定がサポートされています。 ノートブックは、black
パッケージと tokenize-rt
Python パッケージがインストールされているクラスタリングにアタッチする必要があります。
Databricks Runtime 11.3 LTS 以降では、Databricks によってblack
とtokenize-rt
がプリインストールされます。 これらのライブラリをインストールしなくても、フォーマッタを直接使用できます。
Databricks Runtime10.4LTS 以前でblack==22.3.0
フォーマッタを使用するには、tokenize-rt==4.2.1
から とPyPI をノートブックまたはクラスタリングにインストールする必要があります。Pythonノートブックで次のコマンドを実行できます。
%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のセルをフォーマットする方法
コードを書式設定するには、ノートブックに対する CAN EDIT アクセス許可 が必要です。
Databricks は 、Gethue/sql-formatter ライブラリを使用して SQL をフォーマットし、Python の ブラック コード フォーマッタをフォーマットします。
フォーマッタは、以下の方法でトリガーできます。
-
1つのセルをフォーマットする
-
キーボードショートカット: Cmd+Shift+F キーを押します。
-
コマンドコンテキストメニュー:
-
ノートブックの「 編集 」メニュー:PythonまたはSQLセルを選択し、 「編集」>「セルのフォーマット」 を選択します。
-
-
複数のセルをフォーマットする
複数のセルを選択し 、[編集] > [セルの書式設定 ] を選択します。 複数の言語のセルを選択した場合は、SQL セルと Python セルのみが書式設定されます。 これには、
%sql
と%python
を使用するものが含まれます。 -
ノートブック内のすべてのPythonおよびSQLセルをフォーマットする
「編集」>「ノートブックのフォーマット」 を選択します。ノートブックに複数の言語が含まれている場合、SQLセルとPythonセルのみがフォーマットされます。これには、
%sql
や%python
を使用するものが含まれます。
コードフォーマットの制限事項
- Blackは、PEP 8標準の4スペースインデントを採用しています。インデントを構成することはできません。
- SQL UDF内の埋め込みPython文字列のフォーマットはサポートされていません。同様に、Python UDF内のSQL文字列のフォーマットもサポートされていません。
ノートブックのコード言語
デフォルトの言語を設定する
ノートブックのデフォルト言語は、ノートブック名の横に表示されています。
デフォルト言語を変更するには、言語ボタンをクリックし、ドロップダウンメニューから新しい言語を選択します。既存のコマンドが引き続き機能することを保証するために、以前のデフォルト言語のコマンドには、言語マジックコマンドが接頭辞として自動的に付与されます。
混合言語
デフォルトでは、セルはノートブックのデフォルト言語を使用します。言語ボタンをクリックし、ドロップダウンメニューから言語を選択することで、セル内のデフォルト言語をオーバーライドできます。
あるいは、セルの先頭で言語マジックコマンド%<language>
を使用することもできます。サポートされているマジックコマンドは、%python
、%r
、%scala
、%sql
です。
言語マジック コマンドを呼び出すと、コマンドはノートブックの実行コンテキストの REPL にディスパッチされます。 ある言語 (したがって、その言語の REPL) で定義された変数は、別の言語の REPL では使用できません。 REPL は、DBFS 内のファイルやオブジェクト ストレージ内のオブジェクトなどの外部リソースを介してのみ状態を共有できます。
ノートブックでは、いくつかの補助的なマジックコマンドもサポートされます。
%sh
: ノートブックでシェル・コードを実行できます。 シェル・コマンドの終了状況がゼロ以外の場合にセルを失敗させるには、-e
オプションを追加します。 このコマンドは、Apache Spark ドライバーでのみ実行され、ワーカーでは実行されません。 すべてのノードでシェル コマンドを実行するには、 initスクリプトを使用します。%fs
:dbutils
ファイルシステムコマンドを使用できます。 たとえば、dbutils.fs.ls
コマンドを実行してファイルを一覧表示するには、代わりに%fs ls
を指定できます。 詳細については、「Databricksでのファイルの操作」を参照してください。%md
:テキスト、画像、数式や方程式など、さまざまなタイプのドキュメントを含めることができます。次のセクションを参照してください。
Python コマンドでの SQL 構文の強調表示とオートコンプリート
構文の強調表示と SQL オートコンプリート は、 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
を使用する方法を示しています:
変数 _sqldf
は、SQL セルが実行されるたびに再割り当てされます。 特定の DataFrame 結果への参照が失われないようにするには、次の SQL セルを実行する前に、新しい変数名にその結果を割り当てます。
- Python
- SQL
new_dataframe_name = _sqldf
ALTER VIEW _sqldf RENAME TO new_dataframe_name
SQL セルの並列実行
コマンドの実行中、ノートブックが対話型クラスターにアタッチされている場合、現在のコマンドと同時にSQLセルを実行できます。SQLセルは、新しい並列セッションで実行されます。
セルを並列実行するには、以下を実行します。
-
「 今すぐ実行 」をクリックします。 セルはすぐに実行されます。
セルは新しいセッションで実行されるため、テンポラリ ビュー、UDF、および 暗黙的な Python DataFrame (_sqldf
) は、並列に実行されるセルではサポートされません。 また、並列実行時には、デフォルトのカタログ名とデータベース名が使用されます。 コードが別のカタログまたはデータベース内のテーブルを参照する場合は、3 レベルの名前空間 (catalog
.schema
.table
) を使用してテーブル名を指定する必要があります。
SQLウェアハウスでセルSQLを実行する
SQLコマンドは、Databricks SQLウェアハウス (SQL アナリティクス用に最適化されたコンピュートの一種) 上の ノートブックで実行できます。「SQLウェアハウスでノートブックを使用する」を参照してください。