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
    

ステップ 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. このスクリプトを、ステップ 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'
      ]
    )
    
  2. ステップ 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ファイルを実行する

  1. Databricksページに移動し、次のいずれかを実行します。

    • サイドバーで、ワークフローアイコンワークフローとクリック「ジョブを作成」ボタン

    • サイドバーで、新しいアイコン新規をクリックし、メニューからジョブを選択します。

  2. [タスク] タブに表示される [タスク] ダイアログ ボックスで、 [ジョブの名前を追加]をジョブ名 (例: Python wheel exampleに置き換えます。

  3. [タスク名] にタスクの名前を入力します(例:python_wheel_task)。

  4. [種類] で [Python wheel ] を選択します。

  5. [パッケージ名] に「my_test_package」と入力します。[パッケージ名] の値は、インポートする Python パッケージの名前です。この例では、パッケージ名は setup.pyname パラメーターに割り当てられた値です。

  6. [エントリ ポイント] に「run」と入力します。エントリ ポイントは、setup.py スクリプトの entry_points コレクションで指定された値の 1 つです。この例では、 run が定義されている唯一のエントリ ポイントです。

  1. [コンピュート] で、既存のジョブ クラスターを選択するか、新しいジョブ クラスターを追加します

  2. 依存ライブラリの下の「追加」をクリックします。 [依存ライブラリの追加] ダイアログで、ワークスペースが選択された状態で、ステップ 4 で作成したmy_test_package-0.0.1-py3-none-any.whlファイルをダイアログの[ここにファイルをドロップ]領域にドラッグします。

  3. [追加] をクリックします。

  4. [パラメーター] で、[位置指定 引数] または [キーワード引数] を選択して、各パラメーターのキーと値を入力します。位置指定引数とキーワード引数の両方が、コマンドライン引数として Python wheel タスクに渡されます。

    • 位置引数を入力するには、文字列のJSON形式の配列として「問題」を入力します (例: ["first argument","first value","second argument","second value"])。

    • キーワード引数を入力するには、[ + 追加 ] をクリックし、キーと値を入力します。 もう一度 [+ 追加 ] をクリックして、さらに引数を入力します。

  5. タスクを作成」をクリックします。

ステップ 6: ジョブを実行し、ジョブ実行の詳細を表示する

クリックして 「今すぐ実行」ボタン ワークフローを実行します。 実行の詳細 を表示するには、「 トリガーされた実行 」ポップアップで「 実行の表示 」をクリックするか、 ジョブ実行 ビューで実行の「 開始時刻 」列のリンクをクリックします。

実行が完了すると、タスクに渡された引数を含む出力が出力パネルに表示されます。

次のステップ

Databricks ジョブの作成と実行の詳細については、「 ワークフローのスケジュールと調整」を参照してください。