Datavin3

Guía paso a paso para configurar Pipeline Logging en Apache Hop

Escrito por Adalennis Buchillón Soris | 13 de febrero de 2025 9:03:54 Z

Introducción

Apache Hop permite a los ingenieros y desarrolladores de datos diseñar visualmente flujos de trabajo y pipelines de datos para construir soluciones avanzadas.

Después de que tu proyecto haya pasado por las etapas iniciales de desarrollo y pruebas, es fundamental conocer qué sucede en tiempo de ejecución.

La función Pipeline Log de Apache Hop permite registrar la actividad de un pipeline dentro de otro pipeline. Un Pipeline Log transmite información de registro de un pipeline en ejecución a otro pipeline. El Pipeline Log se generará en formato JSON.

Apache Hop pasará la información de registro de cada pipeline que ejecutes al pipeline o pipelines especificados como objetos de metadatos de registro. En este artículo, veremos un ejemplo de cómo configurar y utilizar el metadato pipeline log para escribir información de registro en una base de datos relacional.

Los ejemplos aquí usan variables para separar código y configuración, siguiendo las mejores prácticas en proyectos de Apache Hop.

Paso 1: Crear un objeto de metadatos de Pipeline Log

Para crear un Pipeline Log, haz clic en New -> Pipeline Log o selecciona Metadata -> Pipeline Log.

El sistema mostrará la vista New Pipeline Log con los siguientes campos para configurar:

Ejemplo de configuración:

  • Name: Nombre del objeto de metadatos (pipelines-log).
  • Enabled: El registro está activo por defecto (habilitado).
  • Logging parent pipelines only: Garantiza que solo se registren los pipelines principales, evitando redundancia en ejecuciones anidadas (habilitado).
  • Pipeline executed to capture logging: Selecciona o crea el pipeline que registrará la actividad (${PROJECT_HOME}/code/logging/pipeline-log-database.hpl).
    • ${PROJECT_HOME} representa el directorio raíz de tu proyecto.
    • Puedes seleccionar un pipeline existente, especificar una ruta personalizada o crear uno nuevo directamente.

El único requisito es que el pipeline debe comenzar con un Pipeline Logging Transform como primer paso para garantizar la captura y el procesamiento adecuados de los registros.

  • Execute at the start of a pipeline: Captura registros al inicio de la ejecución (habilitado).
  • Execute at the end of a pipeline: Captura registros al finalizar la ejecución (habilitado).
  • Execute periodically during execution: Permite registrar el progreso en intervalos regulares durante la ejecución del pipeline (deshabilitado en este caso).
  • Interval in Seconds: Si se habilita el registro periódico, los registros se capturarían cada 30 segundos durante la ejecución, proporcionando información en tiempo real (30).

El registro periódico es útil para monitorear pipelines de larga duración. En este ejemplo, está deshabilitado porque no se requieren registros periódicos. Si se habilita, elige un intervalo adecuado para equilibrar la visibilidad en tiempo real con el rendimiento del sistema.

Finalmente, guarda el Pipeline Log metadata.

El Pipeline Logging se aplicará a cualquier pipeline que ejecutes en el proyecto actual. Sin embargo, si deseas registrar solo pipelines específicos, puedes agregarlos en la tabla debajo de las opciones de configuración (Capture output of the following pipelines).

Paso 2: Crear un nuevo pipeline con el Pipeline Logging transform

Para crear el pipeline, haz clic en New en el cuadro de diálogo New Pipeline Log. Luego, elige una carpeta y un nombre para el pipeline.

Nota: Usar el botón New en el diálogo Pipeline Log garantiza que el transform Pipeline Logging se incluya automáticamente. Si creas un pipeline manualmente, debes agregar el transform Pipeline Logging como primer paso para capturar correctamente los registros.

Desde el cuadro de diálogo New Pipeline Log, se creará automáticamente un nuevo pipeline con un Pipeline Logging transform conectado a un Dummy transform (Save logging here).

Configuración del Pipeline Logging transform

Abre el transform y establece los valores según el siguiente ejemplo:

  • Transform name: Nombre del transform (pipeline-log).
  • Also log transform: Opción desmarcada en este ejemplo (unchecked).
    • Cuando está habilitada, esta opción registra información detallada de cada transform en el pipeline, lo que puede generar una gran cantidad de datos.
    • En este ejemplo, la desmarcamos para enfocarnos en los registros de ejecución del pipeline a alto nivel.

Paso 3: Agregar y configurar un Table Output transform

El Table Output transform permite cargar datos en una tabla de base de datos. Equivale al operador INSERT en SQL. Este transform proporciona opciones de configuración para la tabla de destino y ajustes relacionados con el rendimiento, como Commit Size y Use batch update for inserts.

TIP: En este ejemplo, usaremos una conexión a base de datos relacional para el registro, pero también puedes usar archivos de salida. Si decides usar una base de datos, verifica su instalación y disponibilidad como requisito previo.

Creación del Table Output transform

Para agregar el transform Table Output, haz clic en cualquier parte del lienzo del pipeline y luego busca Table Output.

Ahora, abre el transform y configura los siguientes valores:

  • Transform name: Nombre único del transform (pipelines logging).
  • Connection: Conexión a la base de datos donde se escribirán los datos (logging-connection).
    • La conexión se configura mediante el archivo de entorno logging-connection.json, que contiene las variables necesarias.
      Nota: Asegúrate de que la base de datos de destino sea accesible, que el usuario tenga permisos adecuados y que el esquema de la base de datos esté preparado para manejar registros.
  • Target table: Nombre de la tabla de destino (pipelines-logging).

Haz clic en SQL para generar automáticamente el SQL necesario para crear la tabla de salida.

Luego, ejecuta las sentencias SQL.

Abre la tabla creada en tu explorador de base de datos favorito (por ejemplo, DBeaver) para ver todos los campos de registro.

La tabla de registros incluye campos como:

  • logging_date (marca de tiempo del registro),
  • pipelinefilenamename (archivo ejecutado),
  • pipelinestart (marca de tiempo de inicio),
  • pipelineend (marca de tiempo de finalización).

Para más información, consulta la documentación de Apache Hop.

Finalmente, cierra y guarda el pipeline.

Paso 4: Ejecutar un pipeline y revisar los registros

Ejecuta un pipeline haciendo clic en Run -> Launch. En este caso, usamos el pipeline clean-transform.hpl desde my-hop-project.

Los datos de la ejecución del pipeline se registrarán en la tabla pipelines-logging.

Verificación de datos en la tabla pipelines-logging

Abre la tabla pipelines-logging en la base de datos y revisa los registros generados.

Conclusiones

  • Comportamiento predeterminado del registroPaso 1: Por defecto, todos los pipelines se registran. Sin embargo, los usuarios pueden personalizar qué pipelines registrar habilitando o deshabilitando el logging en la configuración del Pipeline Log.
  • Pipeline Logging transformPaso 2: Cuando se usa la opción New desde el diálogo Pipeline Log, se crea automáticamente un pipeline con el Pipeline Logging transform. Si el pipeline se crea manualmente, el usuario debe agregar este transform como paso de entrada para garantizar la funcionalidad de registro.
  • Opciones de almacenamiento de logsPaso 3: Aunque las conexiones a bases de datos relacionales son comúnmente utilizadas, los usuarios también pueden optar por archivos de salida u otros métodos para escribir registros, proporcionando flexibilidad según los requisitos del proyecto.