ジョブで Python wheelファイルを使用するDatabricks
Python ホイール ファイルは 、Python アプリケーションの実行に必要なファイルをパッケージ化して配布する標準的な方法です。 Python wheel タスクを使用すると、Databricks ジョブに Python コードを迅速かつ確実にインストールできます。 この記事では、 Python wheel ファイルと、 Python wheel ファイルにパッケージ化されたアプリケーションを実行するジョブを作成する例を示します。 この例では、次のことを行います。
- サンプル アプリケーションを定義する Python ファイルを作成します。
- サンプル ファイルを Python wheel ファイルにバンドルします。
- Python wheel ファイルを実行するジョブを作成します。
- ジョブを実行し、結果を表示する。
始める前に
この例を完了するには、次のものが必要です。
-
パイソン3
-
Python
wheel
とsetuptool
パッケージ。pip
を使用して、これらのパッケージをインストールできます。たとえば、次のコマンドを実行して、これらのパッケージをインストールできます。Bashpip install wheel setuptools
ステップ 1: 例のローカル ディレクトリを作成する
サンプルコードと生成されたアーティファクトを保持するローカルディレクトリを作成します (例: . databricks_wheel_test
.
ステップ 2: サンプル Python スクリプトを作成する
次の Python の例は、入力引数を読み取り、それらの引数を出力する単純なスクリプトです。 このスクリプトをコピーして、前のステップで作成したディレクトリの my_test_code/__main__.py
というパスに保存します。
"""
The entry point of the Python Wheel
"""
import sys
def main():
# This method will print the provided arguments
print('Hello from my func')
print('Got arguments:')
print(sys.argv)
if __name__ == '__main__':
main()
ステップ 3: パッケージのメタデータ ファイルを作成する
次のファイルには、パッケージを説明するメタデータが含まれています。 これを、手順 1 で作成したディレクトリ内の my_test_code/__init__.py
というパスに保存します。
__version__ = "0.0.1"
__author__ = "Databricks"
ステップ4: Python wheel ファイルを作成する
PythonアーティファクトをPython wheelファイルに変換するには、パッケージ名やエントリポイントなどのパッケージメタデータを指定する必要があります。次のスクリプトは、このメタデータを定義します。
このスクリプトで定義されている entry_points
は、Databricks ワークフローでパッケージを実行するために使用されます。 entry_points
の各値では、=
の前の値 (この例では run
) がエントリ ポイントの名前であり、 Python wheel タスクの構成に使用されます。
-
このスクリプトを、手順 1 で作成したディレクトリのルートにある
setup.py
という名前のファイルに保存します。Pythonfrom setuptools import setup, find_packages
import my_test_code
setup(
name='my_test_package',
version=my_test_code.__version__,
author=my_test_code.__author__,
url='https://databricks.com',
author_email='john.doe@databricks.com',
description='my test wheel',
packages=find_packages(include=['my_test_code']),
entry_points={
'group_1': 'run=my_test_code.__main__:main'
},
install_requires=[
'setuptools'
]
) -
ステップ 1 で作成したディレクトリに移動し、次のコマンドを実行してコードを Python wheel ディストリビューションにパッケージ化します。
Bashpython3 setup.py bdist_wheel
このコマンドは、 Python wheel ファイルを作成し、ディレクトリ内のdist/my_test_package-0.0.1-py3.none-any.whl
ファイルに保存します。
ステップ5.Databricks ファイルを実行する ジョブを作成するPython wheel
-
Databricks ランディングページに移動し、次のいずれかの操作を行います。
- サイドバーで、「
ワークフロー 」をクリックし、「
」をクリックします。
- サイドバーで、[
新規]をクリックし、メニューから[ジョブ]を選択します。
- サイドバーで、「
-
タスク タブに表示されるタスク ダイアログ ボックスで、[ ジョブの名前を追加 ] をジョブ名 (
Python wheel example
など) に置き換えます。 -
[タスク名] にタスクの名前を入力します(例:
python_wheel_task
)。 -
[種類 ] で [ Python wheel ] を選択します。
-
[パッケージ名 ] に「
my_test_package
」と入力します。 [パッケージ名 ] の値は、インポートする Python パッケージの名前です。この例では、パッケージ名はsetup.py
のname
パラメーターに割り当てられた値です。 -
[エントリ ポイント ] に「
run
」と入力します。エントリ ポイントは、setup.py
スクリプトのentry_points
コレクションで指定された値の 1 つです。この例では、run
が定義されている唯一のエントリ ポイントです。 -
コンピュート で、既存のジョブ クラスターを選択するか、 新しいジョブ クラスターを追加します 。
-
「依存ライブラリ」 の下の 「追加 」をクリックします。[ 依存ライブラリの追加 ] ダイアログで、[ ワークスペース ] を選択した状態で、手順 4 で作成した
my_test_package-0.0.1-py3-none-any.whl
ファイルをダイアログの [ここにファイルをドロップ ] 領域にドラッグします。 -
[ 追加 ] をクリックします。
-
[パラメーター ] で、[ 位置指定 引数] または [キーワード引数 ] を選択して、各パラメーターのキーと値を入力します。位置指定引数とキーワード引数の両方が、コマンドライン引数として Python wheel タスクに渡されます。
- 位置引数を入力するには、パラメーターを JSON形式の文字列の配列として入力します (例:
["first argument","first value","second argument","second value"]
)。 - キーワード引数を入力するには、[ + 追加 ] をクリックし、キーと値を入力します。 もう一度 [+ 追加 ] をクリックして、さらに引数を入力します。
- 位置引数を入力するには、パラメーターを JSON形式の文字列の配列として入力します (例:
-
「 タスクを作成 」をクリックします。
ステップ 6: ジョブを実行し、ジョブの実行詳細を表示する
[ ] をクリックしてワークフローを実行します。 実行の詳細 を表示するには、「 トリガーされた実行 」ポップアップで「 実行の表示 」をクリックするか、 ジョブ実行 ビューで実行の「 開始時刻 」列のリンクをクリックします。
実行が完了すると、タスクに渡された引数を含む出力が [出力 ] パネルに表示されます。
次のステップ
Databricks ジョブの作成と実行の詳細については、「 Databricks ジョブを使用したオーケストレーション」を参照してください。