在 Azure Databricks 作业中使用 Python wheel 文件
Python wheel 文件是打包和分发运行 Python 应用程序所需文件的标准方式。 使用 Python wheel 任务,可以确保在 Azure Databricks 作业中快速可靠地安装 Python 代码。 本文提供了一个示例,用于演示如何创建 Python wheel 文件以及如何创建运行 Python wheel 文件中打包的应用程序的作业。 在此示例中,你将:
- 创建用于定义示例应用程序的 Python 文件。
- 将示例文件捆绑到 Python wheel 文件中。
- 创建一个作业来运行 Python wheel 文件。
- 运行作业并查看结果。
开始之前的准备工作
若要完成此示例,需要准备好以下各项:
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 wheel 文件
将 Python 项目转换为 Python wheel 文件需要指定包元数据,例如包名称和入口点。 以下脚本定义此元数据。
注意
此脚本中定义的 entry_points
用于在 Azure 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. 创建 Azure Databricks 作业以运行 Python wheel 文件
转到 Azure Databricks 登陆页面并执行以下操作之一:
- 在边栏中,单击 “工作流”,然后单击 。
- 在边栏中,单击 “新建”,然后从菜单中选择“作业”。
在“任务”选项卡上显示的任务对话框中,将“为作业添加名称...”替换为你的作业名称,例如
Python wheel example
。在“任务名称”中输入任务的名称,例如
python_wheel_task
。在“类型”中选择“Python Wheel”。
在“包名称”中输入
my_test_package
。 “包名称”值是要导入的 Python 包的名称。 在此示例中,包名称是分配给setup.py
中的name
参数的值。在“入口点”中输入
run
。 入口点是在setup.py
脚本的entry_points
集合中指定的值之一。 在此示例中,run
是定义的唯一一个入口点。在“计算”中,选择一个现有作业群集或添加新作业群集。
单击“依赖库”下的“添加”。 在“添加依赖库”对话框中选中“工作区”,然后将步骤 4 中创建的
my_test_package-0.0.1-py3-none-any.whl
文件拖到对话框的“删除文件”区域。单击“添加” 。
在“参数”中,选择“位置参数”或“关键字参数”以输入每个参数的键和值。 位置参数和关键字参数都将作为命令行参数传递给 Python wheel 任务。
- 若要输入位置参数,请以 JSON 格式的字符串数组形式输入参数,例如:
["first argument","first value","second argument","second value"]
。 - 若要输入关键字参数,请单击“+ 添加”并输入键和值。 再次单击“+ 添加”以输入更多参数。
- 若要输入位置参数,请以 JSON 格式的字符串数组形式输入参数,例如:
单击“创建任务”。
步骤 6:运行作业并查看作业运行详细信息
单击 以运行工作流。 若要查看运行详细信息,请在“已触发的运行”弹出窗口中单击“查看运行”,或者在作业运行视图中单击运行“开始时间”列中的链接。
运行完成后,输出会显示在“输出”面板中,其中包括传递给任务的参数。
后续步骤
要详细了解如何创建和运行 Azure Databricks 作业,请参阅计划和编排工作流。