Azure Databricks ジョブで Python ホイール ファイルを使用する
Python ホイール ファイル は、Python アプリケーションの実行に必要なファイルをパッケージ化して配布するための標準的な方法です。 Python wheel タスクを使用すると、Azure Databricks ジョブで Python コードを迅速かつ確実にインストールできます。 この記事では、Python ホイール ファイルと、Python ホイール ファイルにパッケージ化されたアプリケーションを実行するジョブを作成する例を示します。 この例では、次の操作を行います。
- サンプル アプリケーションを定義する Python ファイルを作成します。
- サンプル ファイルを Python ホイール ファイルにバンドルします。
- Python ホイール ファイルを実行するためのジョブを作成します。
- ジョブを実行し、結果を表示します。
始める前に
この例を実行するためには次が必要です。
Python3
Python
wheel
およびsetuptool
パッケージ。pip
を使用して、これらのパッケージをインストールできます。 たとえば、次のコマンドを実行して、これらのパッケージをインストールできます。pip 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 ホイール ファイルを作成する
Python 成果物を Python ホイール ファイルに変換するには、パッケージ名やエントリ ポイントなどのパッケージ メタデータを指定する必要があります。 次のスクリプトでは、このメタデータを定義します。
注意
このスクリプトで定義されている entry_points
は、Azure Databricks ワークフローでパッケージを実行するために使用されます。 entry_points
の各値で、=
の前の値 (この例では run
) はエントリ ポイントの名前であり、Python ホイール タスクの構成に使用されます。
このスクリプトを、手順 1 で作成したディレクトリのルートにある
setup.py
という名前のファイルに保存します。from 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 ホイール ディストリビューションにパッケージ化します。
python3 setup.py bdist_wheel
このコマンドを実行すると、Python ホイール ファイルが作成され、ディレクトリ内の dist/my_test_package-0.0.1-py3.none-any.whl
ファイルに保存されます。
ステップ 5: Python ホイール ファイルを実行する Azure Databricks ジョブを作成する
Azure Databricks のランディング ページに移動し、次のいずれかの操作を行います。
- サイドバーで、 [ワークフロー] をクリックし、 をクリックします。
- サイドバーで、 [新規] をクリックし、メニューから [ジョブ] を選択します。
[タスク] タブに表示されるタスクのダイアログ ボックスで、[ジョブの名前を追加...] をジョブ名 (例:
Python wheel example
) に置き換えます。[タスク名] にタスクの名前 (例:
python_wheel_task
) を入力します。[種類] で、[Python Wheel]\(Python ホイール\) を選択します。
[パッケージ名] に「
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 ホイール タスクに渡されます。
- 位置引数を入力するには、文字列の JSON 形式の配列としてパラメーターを入力します (例:
["first argument","first value","second argument","second value"]
)。 - キーワード引数を入力するには、[+ 追加] をクリックしてキーと値を入力します。 もう一度 [+ 追加] をクリックして、他の引数を入力します。
- 位置引数を入力するには、文字列の JSON 形式の配列としてパラメーターを入力します (例:
[タスクの作成] をクリックします。
手順 6: ジョブを実行し、ジョブの実行の詳細を表示する
をクリックしてワークフローを実行します。 実行の詳細を表示するには、[トリガーされた実行] ポップアップで [実行の表示] をクリックするか、ジョブ実行ビューで実行の [開始時刻] 列のリンクをクリックします。
実行が完了すると、[出力] パネルに、タスクに渡された引数を含む出力が表示されます。
次のステップ
Azure Databricks ジョブの作成と実行の詳細については、「ワークフローのスケジューリングとオーケストレーション」をご覧ください。