在 Lakeflow 作业中使用 Python wheel 文件

Python wheel 文件是打包和分发运行 Python 应用程序所需文件的标准方式。 使用 Python 滚轮任务,可以确保在作业中快速可靠地安装 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。 创建任务以运行 Python wheel 文件

  1. 在工作区中,单击工作流图标,然后在边栏中选择作业和管道

  2. 单击创建,然后选择作业

  3. 单击 Python 滚轮 磁贴以配置第一个任务。 如果 Python 滚轮 磁贴不可用,请单击“ 添加其他任务类型 ”并搜索 Python 滚轮

  4. (可选)将默认为 New Job <date-time>作业名称的作业名称替换为作业名称。

  5. 在“任务名称”中,输入任务的名称。

  6. 如有必要,请从“类型”下拉菜单中选择 Python 滚轮

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

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

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

  10. 指定 Python 滚轮文件:

    • 在“ 环境和库 ”下拉列表中,单击 “铅笔”图标。“默认”旁编辑它。 或者,单击“ 添加新环境 ”以配置新环境。
    • “配置环境 ”对话框中,单击“ 添加依赖项”。
    • 单击 文件夹图标 ,打开文件浏览器。 将步骤 4 中创建的 wheel 文件拖放到 “选择依赖项 ”对话框中。
    • 单击“确认”。
  11. 在“参数”中,选择“位置参数”或“关键字参数”以输入每个参数的键和值。 位置参数和关键字参数都将作为命令行参数传递给 Python wheel 任务。

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

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

单击 立即运行按钮 以运行工作流。 若要查看运行的详细信息,请单击“运行”选项卡,然后单击作业运行视图中运行的“开始时间”列中的链接。

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

后续步骤

若要详细了解如何创建和运行作业,请参阅 Lakeflow 作业