在 Azure Databricks 作业中使用 Python wheel 文件

Python wheel 文件是打包和分发运行 Python 应用程序所需文件的标准方式。 使用 Python wheel 任务,可以确保在 Azure Databricks 作业中快速可靠地安装 Python 代码。 本文提供了一个示例,用于演示如何创建 Python wheel 文件以及如何创建运行 Python wheel 文件中打包的应用程序的作业。 在此示例中,你将:

  • 创建用于定义示例应用程序的 Python 文件。
  • 将示例文件捆绑到 Python wheel 文件中。
  • 创建一个作业来运行 Python wheel 文件。
  • 运行作业并查看结果。

开始之前的准备工作

若要完成此示例,需要准备好以下各项:

  • Python3

  • Python wheelsetuptool 包。 可以使用 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 用于在 Azure 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. 创建 Azure Databricks 作业以运行 Python wheel 文件

  1. 转到 Azure Databricks 登陆页面并执行以下操作之一:

    • 在边栏中,单击 “工作流”图标工作流”,然后单击 创建作业按钮
    • 在边栏中,单击 新建图标新建”,然后从菜单中选择“作业”。
  2. 在“任务”选项卡上显示的任务对话框中,将“为作业添加名称...”替换为你的作业名称,例如 Python wheel example

  3. 在“任务名称”中输入任务的名称,例如 python_wheel_task

  4. 在“类型”中选择“Python Wheel”

  5. 在“包名称”中输入 my_test_package。 “包名称”值是要导入的 Python 包的名称。 在此示例中,包名称是分配给 setup.py 中的 name 参数的值。

  6. 在“入口点”中输入 run。 入口点是在 setup.py 脚本的 entry_points 集合中指定的值之一。 在此示例中,run 是定义的唯一一个入口点。

  7. 在“计算”中,选择一个现有作业群集或添加新作业群集

  8. 单击“依赖库”下的“添加”。 在“添加依赖库”对话框中选中“工作区”,然后将步骤 4 中创建的 my_test_package-0.0.1-py3-none-any.whl 文件拖到对话框的“删除文件”区域。

  9. 单击“添加” 。

  10. 在“参数”中,选择“位置参数”或“关键字参数”以输入每个参数的键和值。 位置参数和关键字参数都将作为命令行参数传递给 Python wheel 任务。

    • 若要输入位置参数,请以 JSON 格式的字符串数组形式输入参数,例如:["first argument","first value","second argument","second value"]
    • 若要输入关键字参数,请单击“+ 添加”并输入键和值。 再次单击“+ 添加”以输入更多参数。
  11. 单击“创建任务”。

步骤 6:运行作业并查看作业运行详细信息

单击 立即运行按钮 以运行工作流。 若要查看运行详细信息,请在“已触发的运行”弹出窗口中单击“查看运行”,或者在作业运行视图中单击运行“开始时间”列中的链接。

运行完成后,输出会显示在“输出”面板中,其中包括传递给任务的参数。

后续步骤

要详细了解如何创建和运行 Azure Databricks 作业,请参阅计划和编排工作流