Share code between Databricks notebooks | Databricks on AWS [2022/12/21時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
Databricksでは、ノートブック間でコードを共有するための方法をいくつかサポートしています。それぞれの方法においては、コードのモジュール化を実現し、ライブラリのようにノートブックでコードを共有することができます。
また、Databricksでは依存関係を持つパイプラインや戻り値に基づくif-then-elseワークフローのような複雑なワークフローにノートブックを組み込むこともできます。ノートブックワークフローをご覧ください。
ノートブックをインポートするために%runを使う
マジックコマンド%runを用いることで、ノートブックに別のノートブックを含めることができます。例えば、別のノートブックにサポート関数を配置することでコードをモジュール化するために%runを用いることができます。また、分析におけるステップを実装する複数のノートブックを結合するために使用することもできます。%runを使用する際、呼び出されたノートブックは即座に実行され、定義された関数や変数は呼び出し下のノートブックで使用できるようになります。
以下の例では、最初のノートブックはヘルパー関数reverseを定義しており、shared-code-notebookを実行するために%runマジックコマンドを実行した後でこの関数を利用できるようになります。


これらのノートブックは両方ともワークスペースの同じディレクトリに格納されているので、現在実行しているノートブックに対して相対的にパスを解決できるように、./shared-code-notebookでプレフィックス./を使用します。%run ./dir/notebookとしたり、%run /Users/username@organization.com/directory/notebookのような絶対パスを指定することでディレクトリにノートブックを整理することができます。
注意
-
%runはノートブック全体をインラインで実行するので、%runは自身専用のセルで実行される必要があります。 - Pythonファイルを実行したり、そのファイルで定義されているエンティティを
importするために%runを使用することはできません。Pythonファイルからインポートするためには、gitを用いてソースコードファイルを参照するを参照ください。あるいは、ファイルをPythonライブラリにパッケージングし、そのPythonライブラリからDatabricksのライブラリを作成し、ノートブックの実行に使用するクラスターにライブラリをインストールします。 - ウィジェットを含むノートブックを実行するために
%runを使用する際、デフォルトでは指定されたノートブックはウィジェットのデフォルト値を用いて実行されます。ウィジェットに値を渡すこともできます。%runにおけるウィジェットの使用をご覧ください。
ソースコードファイルを参照するためにDatabricks Reposを使用する
DatabricksのRepoに格納されているノートブックに対しては、リポジトリのコードファイルを参照することができます。
例えば、リポジトリにpower.pyファイルが含まれているものとします。

このファイルをノートブックにインポートし、ファイルで定義されている関数を呼び出すことができます。

Databricks Reposのファイルの取り扱いの詳細に関しては、Databricks repoにおける非ノートブックファイルの作業をご覧ください。