Tutorial: Ejecución de un trabajo de Batch mediante Data Factory con Batch Explorer, Explorador de Storage y Python

Este tutorial le guiará a través de la creación y ejecución de una canalización de Azure Data Factory que ejecuta una carga de trabajo de Azure Batch. Un script de Python se ejecuta en los nodos de Batch para obtener la entrada de valor separado por comas (CSV) de un contenedor de Azure Blob Storage, manipular los datos y escribir la salida en otro contenedor de almacenamiento. Batch Explorer se usa para crear un grupo y nodos de Batch; y Explorador de Azure Storage, para trabajar con contenedores y archivos de almacenamiento.

En este tutorial aprenderá a:

  • Use Batch Explorer para crear un grupo y nodos de Batch.
  • Use Explorador de Storage para crear contenedores de almacenamiento y cargar archivos de entrada.
  • Desarrolle un script de Python para manipular los datos de entrada y generar la salida.
  • Cree una canalización de Data Factory que ejecute la carga de trabajo de Batch.
  • Use Batch Explorer para ver los archivos de registro de salida.

Prerrequisitos

Uso de Batch Explorer para crear un grupo y nodos de Batch

Use Batch Explorer para crear un grupo de nodos de ejecución para ejecutar la carga de trabajo.

  1. Inicie sesión en Batch Explorer con sus credenciales de Azure.

  2. Seleccione la cuenta de Batch.

  3. Seleccione Grupos en la barra lateral izquierda y luego seleccione el icono + para agregar un grupo.

    Screenshot of creating a pool in Batch Explorer.

  4. Complete el formulario Agregar un grupo a la cuenta de la siguiente manera:

    • En Id., escriba custom-activity-pool.
    • En Nodos dedicados, escriba 2.
    • En Seleccionar una configuración de sistema operativo, seleccione la pestaña Ciencia de datos y, luego, seleccione Dsvm Win 2019.
    • En Elegir un tamaño de máquina virtual, seleccione Standard_F2s_v2.
    • En Tarea de inicio, seleccione Agregar una tarea de inicio. En la pantalla de la tarea de inicio, en Línea de comandos, escriba cmd /c "pip install azure-storage-blob pandas" y luego seleccione Seleccionar. Este comando instala el paquete azure-storage-blob en cada nodo a medida que se inicia.
  5. Haga clic en Guardar y cerrar.

Uso del Explorador de Storage para crear contenedores de blobs

Use el Explorador de Storage para crear contenedores de blobs para almacenar archivos de entrada y salida, y luego cargar los archivos de entrada.

  1. Inicie sesión en el Explorador de Storage con sus credenciales de Azure.
  2. En la barra lateral izquierda, busque y expanda la cuenta de almacenamiento vinculada a la cuenta de Batch.
  3. Haga clic con el botón derecho en Contenedores de blobs y seleccione Crear contenedor de blobs o seleccione Crear contenedor de blobs desde Acciones en la parte inferior de la barra lateral.
  4. Escriba entrada en el campo de entrada.
  5. Cree otro contenedor de blobs denominado output.
  6. Seleccione el contenedor input y luego seleccione Cargar>Cargar archivos en el panel derecho.
  7. En la pantalla Cargar archivos, en Archivos seleccionados, seleccione los puntos suspensivos ... junto al campo de entrada.
  8. Vaya a la ubicación del archivo descargado iris.csv, seleccione Abrir y luego seleccione Cargar.

Screenshot of Storage Explorer with containers and blobs created in the storage account.

Desarrollo de un script de Python

El siguiente script de Python carga el archivo de conjunto de datos iris.csv desde el contenedor input del Explorador de Storage, manipula los datos y guarda los resultados en el contenedor output.

El script debe usar la cadena de conexión para la cuenta de Azure Storage vinculada a la cuenta de Batch. Para obtener la cadena de conexión:

  1. En Azure Portal, busque y seleccione el nombre de la cuenta de almacenamiento vinculada a la cuenta de Batch.
  2. En la página de la cuenta de almacenamiento, seleccione Claves de acceso en el panel de navegación izquierdo en Seguridad y redes.
  3. En key1, seleccione Mostrar junto a Cadena de conexión y, luego, seleccione el icono Copiar para copiar la cadena de conexión.

Pegue la cadena de conexión en el siguiente script y reemplace el marcador de posición <storage-account-connection-string>. Guarde el script como un archivo denominado main.py.

Importante

No se recomienda exponer las claves de cuenta en el origen de la aplicación para el uso de producción. Debes restringir el acceso a las credenciales y hacer referencia a ellas en tu código mediante el uso de variables o un archivo de configuración. Es mejor almacenar claves de cuenta de Batch y Storage en Azure Key Vault.

# Load libraries
from azure.storage.blob import BlobClient
import pandas as pd

# Define parameters
connectionString = "<storage-account-connection-string>"
containerName = "output"
outputBlobName	= "iris_setosa.csv"

# Establish connection with the blob storage account
blob = BlobClient.from_connection_string(conn_str=connectionString, container_name=containerName, blob_name=outputBlobName)

# Load iris dataset from the task node
df = pd.read_csv("iris.csv")

# Take a subset of the records
df = df[df['Species'] == "setosa"]

# Save the subset of the iris dataframe locally in the task node
df.to_csv(outputBlobName, index = False)

with open(outputBlobName, "rb") as data:
    blob.upload_blob(data, overwrite=True)

Ejecute el script localmente para probar y validar la funcionalidad.

python main.py

El script debe generar un archivo de salida denominado iris_setosa.csv que contenga solo los registros de datos que tengan Species = setosa. Después de comprobar que funciona correctamente, cargue el archivo de script main.py en el contenedor input de Explorador de Storage.

Configuración de una canalización de Data Factory

Cree y valide una canalización de Data Factory que use el script de Python.

Obtención de información de la cuenta

La canalización de Data Factory debe usar los nombres de cuenta de Batch y Storage, los valores de clave de cuenta y el punto de conexión de la cuenta de Batch. Para obtener esta información desde Azure Portal:

  1. En la barra de Azure Search, busca y selecciona el nombre de la cuenta de Batch.

  2. En la página Cuenta de Batch, selecciona Claves en el panel de navegación izquierdo.

  3. En la página Claves, copia los valores siguientes:

    • Cuenta de Batch
    • Punto de conexión de la cuenta
    • Clave de acceso principal
    • Nombre de cuenta de almacenamiento
    • Key1

Creación y ejecución de la canalización

  1. Si Azure Data Factory Studio aún no se está ejecutando, seleccione Iniciar Studio en la página Data Factory de Azure Portal.

  2. En Data Factory Studio, seleccione el icono de lápiz Crear en el panel de navegación izquierdo.

  3. En Recursos de Factory, seleccione el icono + y, luego, seleccione Canalización.

  4. En el panel Propiedades de la derecha, cambie el nombre de la canalización a Ejecutar Python.

    Screenshot of Data Factory Studio after you select Add pipeline.

  5. En el panel Actividades, expanda Servicio de Batch y arrastre la actividad Personalizado hasta la superficie del diseñador de canalizaciones.

  6. Debajo del lienzo del diseñador, en la pestaña General, escriba testPipeline en Nombre.

    Screenshot of the General tab for creating a pipeline task.

  7. Seleccione la pestaña Azure Batch y, luego, seleccione Nuevo.

  8. Complete el formulario Nuevo servicio vinculado de la siguiente manera:

    • Nombre: escriba un nombre para el servicio vinculado, como AzureBatch1.
    • Clave de acceso: escriba la clave de acceso principal que ha copiado de la cuenta de Batch.
    • Nombre de cuenta: escriba el nombre de la cuenta de Batch.
    • Dirección URL de Batch: escriba el punto de conexión de la cuenta que ha copiado de la cuenta de Batch, como https://batchdotnet.eastus.batch.azure.com.
    • Nombre del grupo: escriba custom-activity-pool, el grupo que ha creado en Batch Explorer.
    • Nombre del servicio vinculado de la cuenta de almacenamiento: seleccione Nuevo. En la pantalla siguiente, escriba un nombre para el servicio de almacenamiento vinculado, como AzureBlobStorage1, seleccione la suscripción de Azure y la cuenta de almacenamiento vinculada y, luego, seleccione Crear.
  9. En la parte inferior de la pantalla Nuevo servicio vinculado de Batch, seleccione Probar conexión. Después de validar que la conexión se realiza correctamente, seleccione Crear.

    Screenshot of the New linked service screen for the Batch job.

  10. Seleccione la pestaña Configuración y escriba o seleccione la siguiente configuración:

    • Comando: escriba cmd /C python main.py.
    • Servicio vinculado de recursos: seleccione el servicio de almacenamiento vinculado que ha creado, como AzureBlobStorage1 y pruebe la conexión para asegurarse de que se ha realizado correctamente.
    • Ruta de acceso a la carpeta: seleccione el icono de carpeta y, luego, seleccione el contenedor input y seleccione Aceptar. Los archivos de esta carpeta se descargan del contenedor en los nodos del grupo antes de que se ejecute el script de Python.

    Screenshot of the Settings tab for the Batch job.

  11. Seleccione Validar en la barra de herramientas de la canalización para validar la canalización.

  12. Seleccione Depurar para probar la canalización y asegurarse de que funciona correctamente.

  13. Seleccione Publicar todo para publicar los cambios.

  14. Seleccione Agregar desencadenador y, luego, seleccione Desencadenar ahora para ejecutar la canalización o Nuevo o Editar para programarla.

    Screenshot of Validate, Debug, Publish all, and Add trigger selections in Data Factory.

Uso de Batch Explorer para ver los archivos de registro

Si la ejecución de la canalización genera advertencias o errores, puede usar Batch Explorer para ver los archivos de salida stdout.txt y stderr.txt para obtener más información.

  1. En Batch Explorer, seleccione Trabajos en la barra lateral izquierda.
  2. Seleccione el trabajo adfv2-custom-activity-pool.
  3. Seleccione una tarea que haya tenido un código de salida con errores.
  4. Vea los archivos stdout.txt y stderr.txt para investigar y diagnosticar su problema.

Limpieza de recursos

Las cuentas, los trabajos y las tareas de Batch son gratuitos, pero los nodos de ejecución incurren en cargos incluso cuando no ejecutan trabajos. Es mejor asignar grupos de nodos solo según sea necesario y eliminarlos cuando se haya terminado de trabajar con ellos. Al eliminar los grupos, se eliminan todas las salidas de las tareas en los nodos y también los mismos nodos.

Los archivos de entrada y salida permanecen en la cuenta de almacenamiento y pueden incurrir en cargos. Cuando ya no necesite los archivos, puede eliminar los archivos o contenedores. Cuando ya no necesite la cuenta de Batch o la cuenta de almacenamiento vinculada, puede eliminarla.

Pasos siguientes

En este tutorial, ha aprendido a usar un script de Python con Batch Explorer, Explorador de Storage y Data Factory para ejecutar una carga de trabajo de Batch. Para obtener más información sobre Data Factory, consulte ¿Qué es Azure Data Factory?