自作ライブラリをインストールする - Databricks

はじめに

ローカルで構築した自作パッケージ(またはライブラリ)をDatabricksで使用する方法についてまとめる。

環境情報

Databricks RunTime: 9.1 LTS (includes Apache Spark 3.1.2, Scala 2.12)

モジュールをパッケージ化しておくメリット

パッケージ化のメリットは大きく以下の2点がある。

  • 他の作業者も使うであろう共通的な処理をパッケージ化しておくと、毎回モジュールを書く必要がないため作業を効率化できる。

  • ファイルの配置階層を気にすることなく、pipでインストールすることができる。

パッケージの構成

引数にSpark DFとカラム名を渡すと、値にnullが入っているデータ数を返す簡単なパッケージを作る。

count_nulls
├── setup.py
└── count_nulls
    ├── __init__.py
    └── count_nulls.py

setup.py

from setuptools import setup
from setuptools import find_packages

setup(
    name="count_nulls",
    version="0.1.0",
    license="ライセンス",
    description="サンプルパッケージ",
    author="ktksq",
    packages=find_packages()
)

count_nulls.py

from pyspark.sql import functions as f
def cnt_nulls(sdf, column_name):
    num_nulls = sdf.where(f.col(column_name).isNull()).count()
    return num_nulls

Databricksに自作パッケージをインストールする方法

Databricksから自作のパッケージをインストールする方法は2通りある。
1. パッケージをWheel化してDatabricksにアップロードする
2. Githubからインストールする
それぞれの方法について以降で詳しく説明する。

パッケージをWheel化してDatabricksにアップロードする:

0. Wheel を PyPI からインストールする

 $ pip3 install wheel 

1. bdist_wheelコマンドを使ってパッケージをWheelファイル化する

$ python setup.py bdist_wheel

2.  dist ディレクトリ以下に whl ファイルが作成されたことを確認する

$ ls dist/
count_nulls-0.1.0-py3-none-any.whl

3. 1で作成したWheelファイルをDatabricks上にアップロードする

パッケージをDatabricksにアップロードする方法

Githubからインストールする:

1. 作成したパッケージをGithubリポジトリへプッシュする

2. pipコマンドでインストールする
* パブリックレポジトリを対象にインストールを行う場合

%pip install git+https://github.com/<your-github-id>/<your-repository>
  • プライベートレポジトリを対象にインストールを行う場合
# GitHubのパーソナルアクセストークンを取得
token = <your github token>

# pipを用いてライブラリをインストール
%pip install git+https://$token@github.com/<your-github-id>/<your-repository>

Gitレポジトリからのインストール例

実際に試したレポジトリ

github.com

実際に呼び出せるか確認する:

以下のコードで作成したパッケージがDatabricks上から呼び出せることを確認した。

from count_nulls.count_nulls import cnt_nulls
help(cnt_nulls)

実際にパッケージを呼び出せるか確認

まとめ

今回はDatabricks上で自作パッケージを呼び出す方法についてまとめた。

参考

zenn.dev

buildersbox.corp-sansan.com

Python: Wheel でパッケージを配布する | CUBE SUGAR STORAGE