Usar un archivo Wheel de Python en un trabajo de Azure Databricks
Un archivo wheel de Python es una manera estándar de empaquetar y distribuir los archivos necesarios para ejecutar una aplicación de Python. Con la tarea wheel de Python, puede garantizar una instalación rápida y de confianza del código de Python en los trabajos de Azure Databricks. En este artículo se proporciona un ejemplo de cómo crear un archivo wheel de Python y un trabajo que ejecute la aplicación empaquetada en el archivo wheel de Python. En este ejemplo, hará lo siguiente:
- Crear los archivos de Python que definen una aplicación de ejemplo
- Agrupar los archivos de ejemplo en un archivo wheel de Python.
- Crear un trabajo para ejecutar el archivo wheel de Python.
- Ejecutar el trabajo y ver los resultados
Antes de empezar
Para completar este ejemplo, necesita lo siguiente:
Python3
Paquetes
wheel
ysetuptool
de Python. Puede usarpip
para instalar estos paquetes. Por ejemplo, puede ejecutar el comando siguiente para instalar estos paquetes:pip install wheel setuptools
Paso 1: Crear un directorio local para el ejemplo
Cree un directorio local para incluir en este el código de ejemplo y los artefactos generados, por ejemplo, databricks_wheel_test
.
Paso 2: Crear el script de Python de ejemplo
El ejemplo de Python siguiente es un script sencillo que lee los argumentos de entrada y los imprime. Copie este script y guárdelo en una ruta de acceso denominada my_test_code/__main__.py
en el directorio que creó en el paso anterior.
"""
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()
Paso 3: Crear un archivo de metadatos para el paquete
El archivo siguiente contiene metadatos que describen el paquete. Guárdelo en una ruta de acceso denominada my_test_code/__init__.py
en el directorio que creó en el paso 1.
__version__ = "0.0.1"
__author__ = "Databricks"
paso 4: Crear el archivo wheel de Python
La conversión de los artefactos de Python en un archivo wheel de Python requiere especificar metadatos de paquete, como el nombre del paquete y los puntos de entrada. El script siguiente define estos metadatos.
Nota:
El objeto entry_points
definido en este script se usa para ejecutar el paquete en el flujo de trabajo de Azure Databricks. En cada valor de entry_points
, el valor anterior a =
(en este ejemplo, run
) es el nombre del punto de entrada y se usa para configurar la tarea de rueda de Python.
Guarde este script en un archivo denominado
setup.py
en la raíz del directorio que creó en el paso 1: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' ] )
Cambie al directorio que creó en el paso 1 y ejecute el siguiente comando para empaquetar el código en la distribución de ruedas de Python:
python3 setup.py bdist_wheel
Este comando crea el archivo wheel de Python y lo guarda en el archivo dist/my_test_package-0.0.1-py3.none-any.whl
del directorio.
Paso 5. Creación de un trabajo de Azure Databricks para ejecutar el archivo wheel de Python
Vaya a la página de aterrizaje de Azure Databricks y realice una de las siguientes acciones:
- En la barra lateral, haga clic en
Flujos de trabajo y, después, en
.
- En la barra lateral, haga clic en
Nuevo y seleccione Trabajo en el menú.
- En la barra lateral, haga clic en
En el cuadro de diálogo de tarea que aparece en la pestaña Tareas, reemplace Agregar un nombre para el trabajo... por el nombre del trabajo, por ejemplo,
Python wheel example
.En el campo Nombre de tarea, escriba el nombre que quiera darle a la tarea, por ejemplo,
python_wheel_task
.En Tipo, seleccione Wheel de Python.
En Nombre del paquete, escriba
my_test_package
. El valor nombre del paquete es el nombre del paquete de Python que se va a importar. En este ejemplo, el nombre del paquete es el valor asignado al parámetroname
ensetup.py
.En Punto de entrada, escriba
run
. El punto de entrada es uno de los valores especificados en la colecciónentry_points
del scriptsetup.py
. En este ejemplo,run
es el único punto de entrada definido.En Proceso, seleccione un clúster de trabajos existente o Agregar nuevo clúster de trabajo.
Haga clic en Agregar en Bibliotecas dependientes. En el cuadro de diálogo Agregar biblioteca dependiente, con área de trabajo seleccionada, arrastre el
my_test_package-0.0.1-py3-none-any.whl
archivo creado en el paso 4 al cuadro de diálogo Colocar archivo aquí área.Haga clic en Agregar.
En Parámetros, seleccione Argumentos posicionales o Argumentos de palabra clave para especificar la clave y el valor de cada parámetro. Los argumentos posicionales y de palabra clave se pasan a la tarea de Python Wheel como argumentos de línea de comandos.
- Para especificar los argumentos posicionales, escriba los parámetros como matriz de cadenas en formato JSON, por ejemplo:
["first argument","first value","second argument","second value"]
. - Para escribir argumentos de palabra clave, haga clic en + Agregar y escriba una clave y un valor. Vuelva a hacer clic en + Agregar para especificar más argumentos.
- Para especificar los argumentos posicionales, escriba los parámetros como matriz de cadenas en formato JSON, por ejemplo:
Haga clic en Create task (Crear tarea).
Paso 6: Ejecutar el trabajo y ver los detalles de ejecución del trabajo
Haga clic en para ejecutar el flujo de trabajo. Para ver los detalles de la ejecución, haga clic en Ver ejecución en el menú emergente Ejecución desencadenada o haga clic en el vínculo de la columna Hora de inicio de la ejecución en la vista de ejecuciones de trabajos.
Una vez completada la ejecución, se muestra la salida en el panel Salida, incluidos los argumentos pasados a la tarea.
Pasos siguientes
Para más información sobre la creación y ejecución de trabajos de Azure Databricks, consulte Introducción a la orquestación en Databricks.