はじめに
ローカルで構築した自作パッケージ(またはライブラリ)を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上にアップロードする
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>
実際に試したレポジトリ
実際に呼び出せるか確認する:
以下のコードで作成したパッケージがDatabricks上から呼び出せることを確認した。
from count_nulls.count_nulls import cnt_nulls help(cnt_nulls)
まとめ
今回はDatabricks上で自作パッケージを呼び出す方法についてまとめた。