Databricksにおけるライブラリインストール機能のウォークスルー

以前、こちらのマニュアルを翻訳しましたが、一年以上経ったこともあり現時点の機能をウォークスルーしてみます。


https://qiita.com/taka_yayoi/items/0c7fc7d741aad34bf9d4

なお、クラスターにインストールされるDatabricksランタイムには一般的なライブラリはプレインストールされているので、ランタイムに含まれていないライブラリが必要な際にインストールを行います。

そして、利用形態によってライブラリのインストールが異なりますので、注意が必要です。

現時点で利用できるライブラリのインストール形態は以下の2つです。

- ノートブックスコープライブラリ
- クラスターライブラリ

以前あった[ワークスペースライブラリ](https://docs.databricks.com/ja/libraries/workspace-libraries.html)は非推奨になりました。クラスターへのライブラリのインストールを強制したい場合には、[クラスターポリシー](https://qiita.com/taka_yayoi/items/891cfbe2e04a2d606e81)を使用してください。


# ノートブックスコープライブラリ

https://docs.databricks.com/ja/libraries/notebooks-python-libraries.html

ノートブックスコープライブラリは、現在使用しているノートブックのセッションでのみ有効なライブラリです。同じクラスターにアタッチしている他のノートブックに影響を与えません。実験目的でクイックにライブラリを試したい際に使用します。ノートブックを実行する度にライブラリのインストールが必要となります。

ここでは、[drawdata](https://pypi.org/project/drawdata/)というライブラリを試してみます。

```py
# Importing the drawdata
from drawdata import draw_scatter
draw_scatter()
```
```
ModuleNotFoundError: No module named 'drawdata'
```

Databricksランタイムに入っていないのでエラーになります。なので、ノートブックスコープライブラリとしてライブラリをインストールします。

```py
%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()`を使用する必要がある場合があります。

これで、ノートブックスコープライブラリとしてインストールされたので、再度トライします。

```py
# Importing the drawdata
from drawdata import draw_scatter
draw_scatter()
```

動きました。線を描画してプロットからデータを生成することができるんですね。
![Screenshot 2023-11-17 at 17.59.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/58012e05-a2ee-06c1-9ce9-c8c6c3d1f516.png)

# クラスターライブラリ

しかし、上述したようにノートブックスコープライブラリはノートブックを実行する度に、ライブラリのインストールが必要です。この手間を省くにはクラスターライブラリを使用します。クラスターライブラリの場合、当該クラスターにアタッチされるすべてのノートブックがライブラリを利用できるようになります。ですので、恒久的にライブラリを活用することを決断した場合には、クラスターライブラリをお使いください。

クラスターの画面にアクセスし、**ライブラリ**タブを開きます。
![Screenshot 2023-11-17 at 18.01.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/0adc6d6d-bbcb-642a-d1d3-3312f9398b30.png)

新規をインストールをクリックします。PyPI以外にもCRANなどからもライブラリをインストールできます。ライブラリのソースを選択し、パッケージ名を入力しインストールします。
![Screenshot 2023-11-17 at 18.02.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/ab8f89ab-5882-8e62-5e99-ab312c37e34c.png)
![Screenshot 2023-11-17 at 18.03.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/56756941-1034-7f81-84ad-ecb408324a1a.png)

クラスターライブラリとしてインストールされました。
![Screenshot 2023-11-17 at 18.04.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/8c6d2889-07bc-d20a-a560-65da566b0c16.png)

動作確認するためにノートブックをクラスターからデタッチして、再度アタッチします。これでノートブックセッションがクリアされます。
![Screenshot 2023-11-17 at 18.05.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/c24aa3e8-69c3-d7a4-b734-66a271a3f3d7.png)

再度drawdataを実行します。
```py
# Importing the drawdata
from drawdata import draw_scatter
draw_scatter()
```
動きました。これで、このクラスターを使っている限り、インストールしたライブラリを利用できるようになりました。
![Screenshot 2023-11-17 at 18.06.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/69eed8ef-5d54-5d9e-e72c-4dec86f6beab.png)

なお、どのようなライブラリがクラスターライブラリやノートブックスコープライブラリとしてインストールされているのかは、画面右にあるライブラリボタンから確認することができます。以下の例では、クラスターライブラリとしてdrawdataがインストールされていることを確認できます。
![Screenshot 2023-11-17 at 18.05.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/d4cb3291-2d44-1a13-891c-5eca63a6c2d0.png)

是非ご活用ください！

### Databricksクイックスタートガイド

[Databricksクイックスタートガイド](https://www.amazon.co.jp/dp/B09V1YXFVQ/)


### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)