以前、こちらのマニュアルを翻訳しましたが、一年以上経ったこともあり現時点の機能をウォークスルーしてみます。
なお、クラスターにインストールされるDatabricksランタイムには一般的なライブラリはプレインストールされているので、ランタイムに含まれていないライブラリが必要な際にインストールを行います。
そして、利用形態によってライブラリのインストールが異なりますので、注意が必要です。
現時点で利用できるライブラリのインストール形態は以下の2つです。
- ノートブックスコープライブラリ
- クラスターライブラリ
以前あったワークスペースライブラリは非推奨になりました。クラスターへのライブラリのインストールを強制したい場合には、クラスターポリシーを使用してください。
ノートブックスコープライブラリ
ノートブックスコープライブラリは、現在使用しているノートブックのセッションでのみ有効なライブラリです。同じクラスターにアタッチしている他のノートブックに影響を与えません。実験目的でクイックにライブラリを試したい際に使用します。ノートブックを実行する度にライブラリのインストールが必要となります。
ここでは、drawdataというライブラリを試してみます。
# Importing the drawdata
from drawdata import draw_scatter
draw_scatter()
ModuleNotFoundError: No module named 'drawdata'
Databricksランタイムに入っていないのでエラーになります。なので、ノートブックスコープライブラリとしてライブラリをインストールします。
%pip install drawdata
dbutils.library.restartPython()
Google Colaboなどでは!pip install
かと思いますが、Databricksの場合、%pip install
です。これで、クラスターの全ノードにライブラリがインストールされます。!pip install
も使えますが、この場合、クラスターのドライバーノードにのみライブラリがインストールされます。
また、dbutils.library.restartPython()
も重要です。Databricks Runtime 13.0 以降では、%pip
コマンドはPythonプロセスを自動的に再起動しません。新しいパッケージをインストールするか、既存のパッケージを更新する場合は、新しいパッケージを確認するためにdbutils.library.restartPython()
を使用する必要がある場合があります。
これで、ノートブックスコープライブラリとしてインストールされたので、再度トライします。
# Importing the drawdata
from drawdata import draw_scatter
draw_scatter()
動きました。線を描画してプロットからデータを生成することができるんですね。
クラスターライブラリ
しかし、上述したようにノートブックスコープライブラリはノートブックを実行する度に、ライブラリのインストールが必要です。この手間を省くにはクラスターライブラリを使用します。クラスターライブラリの場合、当該クラスターにアタッチされるすべてのノートブックがライブラリを利用できるようになります。ですので、恒久的にライブラリを活用することを決断した場合には、クラスターライブラリをお使いください。
新規をインストールをクリックします。PyPI以外にもCRANなどからもライブラリをインストールできます。ライブラリのソースを選択し、パッケージ名を入力しインストールします。
動作確認するためにノートブックをクラスターからデタッチして、再度アタッチします。これでノートブックセッションがクリアされます。
再度drawdataを実行します。
# Importing the drawdata
from drawdata import draw_scatter
draw_scatter()
動きました。これで、このクラスターを使っている限り、インストールしたライブラリを利用できるようになりました。
なお、どのようなライブラリがクラスターライブラリやノートブックスコープライブラリとしてインストールされているのかは、画面右にあるライブラリボタンから確認することができます。以下の例では、クラスターライブラリとしてdrawdataがインストールされていることを確認できます。
是非ご活用ください!