Databricksでライブラリをインストールする

Databricksワークスペースでライブラリを利用する手順をまとめています。

:::note info
**注意**
- こちらではPythonのライブラリについてフォーカスしています。
- また、Databricksがデプロイされている環境ではインターネットに接続できることを想定しています。閉域網を構成する[PrivateLink構成](https://qiita.com/taka_yayoi/items/c6bdbb6452f6a0895961)の場合、異なる方法を取る必要があります。
:::

まず、[Databricksのクラスター](https://qiita.com/taka_yayoi/items/c5d99cd77fe4bfcf69f0)に自動でインストールされるソフトウェアパッケージである[Databricksランタイム](https://docs.databricks.com/runtime/index.html)には、よく利用されるライブラリが事前にインストールされているので、多くの場合、追加のライブラリのインストールは不要です。

使用するランタイムのバージョンによって事前インストールされているライブラリがことなりますので、以下の手順で必要とするライブラリがランタイムで利用できるのかを確認してください。

https://qiita.com/taka_yayoi/items/9373d7a89f55968f7536

# ライブラリのインストール

上で確認して、必要なライブラリがインストールされていない、あるいは、バージョンが異なる場合にはライブラリをインストールすることになります。

ライブラリの用途、適用範囲に応じてインストール方法が異なります。

![Screen Shot 2022-06-09 at 17.09.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/2b6ef017-5479-302e-c52f-ea7bdc8f6ec6.png)

- **自分の使っているノートブックだけで実験的にライブラリをインストールしたい**: [ノートブックスコープライブラリ](https://qiita.com/taka_yayoi/items/d3a46efdc1ad01a581d0)としてライブラリをインストールします。
- **クラスターを利用している全てのユーザー、全てのノートブックで同じバージョンのライブラリを利用してもらいたい**: [クラスターライブラリ](https://qiita.com/taka_yayoi/items/9407356caadea3dfb47c)としてライブラリをインストールします。
- **ワークスペースにアクセスするユーザーが利用できるライブラリのリポジトリを準備しておきたい**: [ワークスペースライブラリ](https://qiita.com/taka_yayoi/items/b1668be2ebb6a7841bd0)としてライブラリをインストールします。

:::note info
**注意**
[PrivateLink構成](https://qiita.com/taka_yayoi/items/c6bdbb6452f6a0895961)の場合、クラスターからパブリックのリポジトリにアクセスできないため、必要なライブラリをインストールした[Dockerイメージを作成](https://qiita.com/taka_yayoi/items/506fa9b15fd07fcac141)し、クラスターとして利用することをお勧めします。
:::

# クラスターライブラリのインストール

共用のクラスターで同じバージョンのライブラリを利用できるようにしたいと考え、[クラスターライブラリ](https://qiita.com/taka_yayoi/items/9407356caadea3dfb47c)をインストールします。

:::note info
**注意**
クラスターにライブラリをインストールする際、すでにクラスターにアタッチされているノートブックからはすぐに参照することはできません。最初にノートブックをクラスターから[デタッチ](https://qiita.com/taka_yayoi/items/c306161906d6d34e8bd5#%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%83%BC%E3%81%8B%E3%82%89%E3%83%8E%E3%83%BC%E3%83%88%E3%83%96%E3%83%83%E3%82%AF%E3%82%92%E3%83%87%E3%82%BF%E3%83%83%E3%83%81%E3%81%99%E3%82%8B)し、[再度アタッチ](https://qiita.com/taka_yayoi/items/c306161906d6d34e8bd5#%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%83%BC%E3%81%AB%E3%83%8E%E3%83%BC%E3%83%88%E3%83%96%E3%83%83%E3%82%AF%E3%82%92%E3%82%A2%E3%82%BF%E3%83%83%E3%83%81%E3%81%99%E3%82%8B)する必要があります。
:::

1. サイドメニューの**クラスター**にアクセスし、ライブラリをインストールしたいクラスターを選択します。
1. **ライブラリ**タブを開きます。インストール済みのライブラリが表示されます。
![Screen Shot 2022-06-09 at 17.13.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/85d1f073-8543-bbdc-963b-faf59ecbf8f5.png)
1. **新規をインストール**をクリックします。
1. ライブラリのソースでは**PyPI**を選択し、パッケージには`XlsxWriter`を入力します。
![Screen Shot 2022-06-09 at 17.14.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/d34b0fdf-bb22-39ed-d80a-ae54e2185b4c.png)
1. **インストール**をクリックします。
1. ライブラリのステータスが**インストール済み**になったことを確認します。
![Screen Shot 2022-06-09 at 17.29.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/043966d8-e8ea-196c-94d8-156cbeed01ea.png)
1. 上でライブラリをインストールしたクラスターにノートブックをアタッチします。
1. 以下のようなロジックを記述し、実行するとExcelファイルが作成されます。

```py:Python
import pandas as pd
filename="test.xlsx" #ファイル名
exportlist=[1,1,2,3,1,4,5] #リスト
df = pd.DataFrame(exportlist) #データフレームの作成
writer = pd.ExcelWriter(filename,options={'strings_to_urls': False}, engine='xlsxwriter')
df.to_excel(writer, sheet_name="Sheet1")#Writerを通して書き込み
writer.close() 
```

![Screen Shot 2022-06-09 at 17.35.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/8798f7eb-7ba0-9931-24f8-0e07b23a15ca.png)

ここでインストールしたライブラリ`XlsxWriter`は、上のクラスターを利用する全てのユーザーが使用することができます。

:::note info
**注意**
上のコードでは、Excelファイルはクラスター上に作成されます。ローカルにファイルをダウンロードするにはDBFSの`/FileStore`に移動する必要があります。詳細は[DatabricksのFileStore](https://qiita.com/taka_yayoi/items/01d9b69d2f5283d27d96)をご覧ください。
:::

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

同じクラスターを利用している他のユーザーには影響を与えず、自分でライブラリを試してみたいと考え、[ノートブックスコープライブラリ](https://qiita.com/taka_yayoi/items/d3a46efdc1ad01a581d0)をインストールします。

:::note warn
**重要！**
ノートブックの一番最初に`%pip`を記述してください。`%pip`が実行された後に、ノートブックの内部状態がリセットされます。ノートブックでPythonメソッドあるいは変数を宣言した後に`%pip`を実行するとそれらは消去されてしまいます。
:::

1. ノートブックを稼働中のクラスターにアタッチします。ノートブック左上のドロップダウンからクラスターを選択します。
![Screen Shot 2022-06-09 at 17.38.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/e888daa0-d8e0-09b7-8814-714b255d3869.png)
1. ここでは`japanize-matplotlib`をインストールします。セルに以下の内容を記述し実行します。

    ```py:Python
    %pip install japanize-matplotlib
    ```
1. これで`japanize-matplotlib`がノートブックスコープライブラリとしてインストールされます。
![Screen Shot 2022-06-09 at 17.40.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/eb2e310f-29c0-a35e-ea24-be4269aa2e63.png)
1. 以下のコマンドを実行して、日本語のグラフが正常に表示されることを確認します。

    ```py:Python
    import matplotlib.pyplot as plt
    import japanize_matplotlib  # <- これ
    
    plt.plot([1, 2, 3, 4])
    plt.xlabel('簡単なグラフ')
    plt.show()
    ```

![Screen Shot 2022-06-09 at 17.41.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/ce79f65d-4360-016d-737d-c19aa158590c.png)

ノートブックスコープライブラリとしてインストールしたライブラリは、同じクラスターを使っている他のユーザーに影響を与えませんので、気軽に実験を行うことができます。一方で、ライブラリは永続化されないので、クラスターが再起動するたびに再インストールする必要があります。

### Databricks 無料トライアル

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