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. このスクリプトを、手順 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 ホイール ディストリビューションにパッケージ化します。

    python3 setup.py bdist_wheel
    

このコマンドを実行すると、Python ホイール ファイルが作成され、ディレクトリ内の dist/my_test_package-0.0.1-py3.none-any.whl ファイルに保存されます。

ステップ 5: Python ホイール ファイルを実行する Azure Databricks ジョブを作成する

  1. Azure Databricks のランディング ページに移動し、次のいずれかの操作を行います。
    • サイドバーで、[ジョブ] アイコン[ワークフロー] をクリックし、[ジョブの作成] ボタン をクリックします。
    • サイドバーで、[新規] アイコン[新規] をクリックし、メニューから [ジョブ] を選択します。
  2. [タスク] タブに表示されるタスクのダイアログ ボックスで、[ジョブの名前を追加...] をジョブ名 (例: Python wheel example) に置き換えます。
  3. [タスク名] にタスクの名前 (例: python_wheel_task) を入力します。
  4. [種類] で、[Python Wheel]\(Python ホイール\) を選択します。
  5. [パッケージ名] に「my_test_package」と入力します。 パッケージ名は、setup.py スクリプトで name 変数に代入される値です。
  6. [エントリ ポイント] に「run」と入力します。 エントリ ポイントは、setup.py スクリプトの entry_points コレクションで指定された値の 1 つです。 この例では、run が定義されている唯一のエントリ ポイントです。
  7. [クラスター] 内で、互換性のあるクラスターを選択します。 「クラスター スコープ ライブラリ」を参照してください。
  8. [依存ライブラリ][追加] をクリックします。 [依存ライブラリの追加] ダイアログ内で、[ワークスペース] が選択された状態で、手順 4 で作成した my_test_package-0.0.1-py3-none-any.whl ファイルをダイアログの [ここにファイルをドロップ] 領域にドラッグします。
  9. [追加] をクリックします。
  10. [パラメーター] で、[位置引数] または [キーワード引数] を選択して、各パラメーターのキーと値を入力します。 位置引数とキーワード引数の両方が、コマンド ライン引数として Python ホイール タスクに渡されます。
    • 位置引数を入力するには、文字列の JSON 形式の配列としてパラメーターを入力します (例: ["first argument","first value","second argument","second value"])。
    • キーワード引数を入力するには、[+ 追加] をクリックしてキーと値を入力します。 もう一度 [+ 追加] をクリックして、他の引数を入力します。
  11. [タスクの保存] をクリックします。

手順 6: ジョブを実行し、ジョブの実行の詳細を表示する

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

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

次のステップ

Azure Databricks ジョブの作成と実行の詳細については、「Azure Databricks ジョブを作成および実行する」を参照してください。