Python および R モジュール を操作する

この記事では、相対パスを使用して、Databricks ノートブックと一緒にワークスペース ファイルに保存されているカスタム Python および R モジュールをインポートする方法について説明します。 ワークスペース ファイルを使用すると、より緊密な開発ライフサイクルが促進され、コードのモジュール化%run コマンドのインポート ステートメントへの変換Python wheelファイルのバージョン管理されたモジュールへのリファクタリングが可能になります。 組み込みの Databricks Web ターミナルを使用してコードをテストすることもできます。

Databricks Runtime 14.0 以降では、ローカルで実行されるコードの既定の現在の作業ディレクトリ (CWD) は、実行されているノートブックまたはスクリプトを含むディレクトリです。 これは、Databricks Runtime 13.3 LTS 以前からの動作の変更です。 「デフォルトの現在の作業ディレクトリは何ですか?」を参照してください。

Python モジュールと R モジュール をインポートする

重要

Databricks Runtime 13.3 LTS以降では、 Python sys.path に追加されたディレクトリ、またはPythonパッケージとして構造化されたディレクトリは、クラスター内のすべてのエグゼキューターに自動的に配布されます。 Databricks Runtime 12.2 LTS以前では、sys.path に追加されたライブラリをエグゼキューターに明示的にインストールする必要があります。

Databricks Runtime 11.3 LTS 以降では、ノートブックの現在の作業ディレクトリが Python パスに自動的に追加されます。 Git フォルダーを使用している場合は、ルート リポジトリ ディレクトリが追加されます。

別のディレクトリからモジュールをインポートするには、モジュールを含むディレクトリを sys.pathに追加する必要があります。 ディレクトリは、次の例のように相対パスを使用して指定できます。

import sys
import os
sys.path.append(os.path.abspath('..'))

ワークスペース ファイルに格納されているモジュールから関数をインポートするのは、クラスター ライブラリまたはノートブック スコープのライブラリとして保存されたモジュールからインポートする場合と同じです。

from sample import power
power.powerOfTwo(3)
source("sample.R")
power.powerOfTwo(3)

重要

import ステートメントを使用すると、同じ名前のライブラリが複数存在する場合、Databricks は設定された優先順位に従います。Python ライブラリの優先順位を参照してください。

Python モジュールの 自動リロード

Python コードの開発中に複数のファイルを編集している場合は、任意のノートブック セルまたは Python ファイルで次のコマンドを使用して、すべてのモジュールを強制的に再読み込みできます。

%load_ext autoreload
%autoreload 2

自動リロードはドライバーでのみ機能し、UDF のエグゼキューターにコードを再読み込みしないことに注意してください。

コードの リファクタリング

コード開発のベスト プラクティスは、簡単に再利用できるようにコードをモジュール化することです。 ワークスペース ファイルを使用してカスタム Python ファイルを作成し、 import ステートメントを使用して、それらのファイル内のコードをノートブックで使用できるようにすることができます。

ノートブックコードを再利用可能なファイルにリファクタリングするには:

  1. コードの新しいソース コード ファイルを作成します。

  2. Python インポート ステートメントをノートブックに追加して、新しいファイルのコードをノートブックで使用できるようにします。

%run コマンド からの移行

%run コマンドを使用して、ノートブックで定義されている Python または R 関数を別のノートブックで使用できるようにする場合、またはクラスターにカスタム .whl ファイルをインストールする場合は、それらのカスタム モジュールをワークスペース ファイルとして含めることを検討してください。このようにして、ノートブックと他のコード モジュールの同期を維持し、ノートブックで常に正しいバージョンが使用されるようにすることができます。

%run コマンドを使用すると、あるノートブックを別のノートブックに含めることができ、サポートする Python または R コードをノートブックで使用できるようにするためによく使用されます。 この例では、 power.py という名前のノートブックに次のコードが含まれています。

# This code is in a notebook named "power.py".
def n_to_mth(n,m):
  print(n, "to the", m, "th power is", n**m)

その後、 %run コマンドを使用して、 power.py で定義された関数を別のノートブックで使用できるようにすることができます。

# This notebook uses a %run command to access the code in "power.py".
%run ./power
n_to_mth(3, 4)

ワークスペース ファイルを使用すると、Python コードを含むモジュールを直接インポートし、関数を実行できます。

from power import n_to_mth
n_to_mth(3, 4)

Python .whl ファイルを相対ライブラリ にリファクタリングする

カスタム .whl ファイルをクラスターにインストールし、そのクラスターにアタッチされたノートブックにインポートできます。 頻繁に更新されるコードの場合、このプロセスは煩雑でエラーが発生しやすい場合があります。 ワークスペース ファイルを使用すると、これらの Python ファイルをコードを使用するノートブックと同じディレクトリに保持して、ノートブックで常に正しいバージョンが使用されるようにすることができます。

Python プロジェクトのパッケージ化の詳細については、 このチュートリアルを参照してください。

Databricks Webターミナルをテストに使用する

Databricks Web ターミナルを使用すると、ファイルをノートブックにインポートしてノートブックを実行しなくても、Python または R コードへの変更をテストできます。

  1. Webターミナルを開きます。

  2. ディレクトリに移動します: cd /Workspace/Users/<path-to-directory>/.

  3. Python または R ファイル ( python file_name.py または Rscript file_name.r) を実行します。