DatabricksジョブでPython wheelファイルを使用する
Pythonホイール ファイルは、 Python アプリケーションの実行に必要なファイルをパッケージ化して配布するための標準的な方法です。 Python wheelタスクを使用すると、Python Databricksジョブに コードを迅速かつ確実にインストールできます。この記事では、 Python wheelファイルと、 Python wheelファイルにパッケージ化されたアプリケーションを実行するジョブの作成例を示します。 この例では、次のことを行います。
サンプル アプリケーションを定義する Python ファイルを作成します。
サンプル ファイルをPython wheelファイルにバンドルします。
Python wheelファイルを実行するジョブを作成します。
ジョブを実行し、結果を表示します。
始める前に
この例を完了するには、次のものが必要です。
パイソン3
Python
wheel
パッケージとsetuptool
パッケージ。pip
を使用して、これらのパッケージをインストールできます。たとえば、次のコマンドを実行して、これらのパッケージをインストールできます。pip install wheel setuptools
ステップ 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
という名前のファイルに保存します。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 wheel ディストリビューションにパッケージ化します。
python3 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
」と入力します。 パッケージ名は、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"]
)。キーワード引数を入力するには、[ + 追加 ] をクリックしてキーと値を入力します。 もう一度 [+ 追加 ] をクリックして、さらに引数を入力します。
[ タスクの保存] をクリックします。
ステップ 6: ジョブを実行し、ジョブ実行の詳細を表示する
クリックして ワークフローを実行します。 実行 の詳細 を表示するには、 [ トリガーされた実行] ポップアップで [実行の表示] をクリックするか、 ジョブの実行 ビューで 実 行 の [ 開始時 刻 ] 列のリンクをクリックします。
実行が完了すると、タスクに渡された引数を含む 出力が出力 パネルに表示されます。
次のステップ
Databricks ジョブの作成と実行の詳細については、「 Databricks ジョブの作成と実行」を参照してください。