Datavin3

Combinando Flujos de Datos en Apache Hop: Saltos Directos vs. Append Streams

Escrito por Adalennis Buchillón Soris | 16 de enero de 2025 10:15:07 Z

¡Hola a todos! En este post, exploraremos cómo combinar de manera eficiente los datos de múltiples fuentes en Apache Hop. Veremos cuándo puedes mantener las cosas simples conectando directamente los flujos de datos y cuándo necesitarás la transformación Append Streams para un control preciso sobre el orden de los datos. ¡Comencemos!

Introducción

Imagina este escenario: estás construyendo una tubería de datos en Apache Hop y tienes tres fuentes de datos diferentes alimentándola.

Estos flujos de datos son idénticos: tienen las mismas columnas, los mismos tipos de datos, todo coincide perfectamente. Entonces, la gran pregunta es: ¿cómo combinar estos flujos en un solo flujo de trabajo de manera eficiente?

El enfoque simple

Si tus flujos de datos son idénticos y no te importa el orden en que se procesan, hay una solución sencilla. Puedes crear saltos directos desde cada uno de tus flujos de entrada a una única transformación posterior. Este método es limpio, eficiente y mantiene tu pipeline fácil de gestionar.

Ejemplo sin Append Streams:

Consideremos un escenario en el que tienes dos archivos CSV, uno con los datos de vuelos de enero y otro con los de febrero. Ambos archivos tienen las mismas columnas: Número de vuelo, Salida, Llegada, Fecha y Aerolínea.

Resumen del pipeline:

  • Archivos de entrada: Comienza con dos transformaciones Text File Input, una para cada archivo CSV (enero y febrero).
  • Saltos directos: Crea saltos directos desde estas transformaciones hacia una única transformación posterior, como 'Select Values' o 'Sort Rows'.

En esta configuración, Apache Hop maneja automáticamente la unión de los datos, fusionando todos los flujos en uno sin la necesidad de transformaciones adicionales. Este método es perfecto cuando solo deseas agregar datos sin preocuparte por el orden en el que aparecen los registros.

Puntos clave:

  • Eficiencia: Este enfoque es muy eficiente, ya que evita la sobrecarga de gestionar el orden de los flujos.
  • Simplicidad: El pipeline es simple, con transformaciones mínimas y un flujo de datos fácil de entender.
  • Flexibilidad: Puedes escalar fácilmente este enfoque agregando más flujos idénticos, todos alimentando la misma transformación posterior.

Este diseño de pipeline es ideal cuando se trabaja con múltiples fuentes de datos idénticas y se necesita combinarlas rápidamente sin importar el orden en que se procesan las filas. Es una excelente solución para el procesamiento de datos a gran escala, donde el rendimiento y la simplicidad son clave.

Cuándo usar la transformación Append Streams

Pero, ¿qué pasa si el orden de tus datos importa? En el ejemplo anterior, cuando comienza el pipeline, todas las transformaciones se inicializan simultáneamente. Como resultado, los datos de las primeras y segundas entradas se procesan de forma concurrente, lo que significa que el orden de los datos puede no mantenerse.

Sin embargo, en algunos casos, necesitas asegurarte de que los datos de una fuente se procesen completamente antes de que comiencen los datos de la siguiente fuente. Aquí es donde entra en juego la transformación Append Streams.

Ejemplo que requiere Append Streams:

Imagina que tienes los mismos dos archivos de datos de vuelos: flights_january.csv y flights_february.csv. Ambos archivos tienen las columnas idénticas. Sin embargo, la columna "Aerolínea operativa" en el archivo de enero contiene caracteres adicionales, como paréntesis, que deben limpiarse.

Quieres asegurarte de que todos los datos de enero se procesen y limpien antes de que el pipeline comience a procesar los datos de febrero. Este orden es crítico porque la lógica de limpieza solo se aplica a los datos de enero.

Resumen del pipeline:

  • Archivos de entrada: Comienza con dos transformaciones Text File Input separadas, una para flights_january.csv y otra para flights_february.csv.
  • Limpieza de datos para enero: Usa una transformación 'Replace in String' para limpiar la columna "Aerolínea operativa" en los datos de enero.
  • Append Streams: Usa la transformación Append Streams para combinar los datos limpios de enero con los datos de febrero.

Al usar la transformación Append Streams, aseguras que los datos del primer flujo (enero) se procesen completamente antes de que comience el procesamiento de los datos del segundo flujo (febrero).

Esto es crucial cuando la secuencia de las filas afecta el resultado del procesamiento de los datos o cuando mantener el orden de los datos es necesario para las operaciones posteriores.

Si pasas el mouse sobre el icono azul de información, verás una nota que explica que la distribución de filas tipo round-robin no es aplicable para procesamiento secuencial. Esto asegura que todas las filas de la primera entrada se procesen antes de pasar a la siguiente.

Puntos clave:

  • Preservación del orden: Este enfoque es crucial cuando el orden de procesamiento es importante.
  • Control: El pipeline te da un control detallado sobre la secuencia del procesamiento de los datos, lo cual es importante para ciertos tipos de análisis o informes.
  • Manejo de múltiples flujos: Si tienes más de dos flujos que combinar, recuerda que la transformación Append Streams solo permite dos flujos de entrada. Necesitarás usar múltiples transformaciones Append Streams para manejar más de dos entradas.

Este diseño de pipeline es ideal cuando tienes múltiples fuentes de datos con esquemas idénticos y necesitas controlar estrictamente el orden del procesamiento de los datos. La transformación Append Streams es la herramienta perfecta para este escenario, asegurando que tus datos se procesen en la secuencia correcta.

Resumen de los casos de uso

Para resumir: si trabajas con flujos idénticos y no necesitas preocuparte por el orden del procesamiento, los saltos directos hacia una única transformación son tu mejor opción. Es rápido, fácil y mantiene las cosas simples.

Pero cuando el orden importa, o si necesitas asegurarte de que los datos se procesen en una secuencia específica, la transformación Append Streams es la herramienta que necesitas.

Conclusión

Entender cuándo y cómo usar estos métodos te ayudará a construir pipelines más eficientes y efectivos en Apache Hop. ¡Gracias por leer! Si te ha resultado útil, mantente atento para más consejos sobre cómo dominar tus flujos de datos. ¡Nos vemos en el próximo post!

La publicación original en inglés en: know.bi