Canalizaciones de transmisión

Las clases PCollection no delimitadas o las colecciones no delimitadas representan datos en canalizaciones de transmisión. Una colección no delimitada contiene datos de una fuente de datos que se actualiza continuamente, como Pub/Sub.

No puedes usar una clave para agrupar elementos en una colección no delimitada. Es posible que haya una cantidad infinita de elementos para una clave determinada en los datos de transmisión porque la fuente de datos agrega elementos nuevos constantemente. Puedes usar ventanas, marcas de agua y activadores para agregar elementos en colecciones no delimitadas.

El concepto de ventanas también se aplica a las PCollections delimitadas que representan datos en canalizaciones por lotes. Si deseas obtener información sobre el sistema de ventanas en canalizaciones por lotes, consulta la documentación de Apache Beam para sistemas de ventanas con PCollections delimitadas.

Ventanas y funciones analíticas

Las funciones analíticas dividen las colecciones no delimitadas en componentes lógicos o ventanas. Las funciones analíticas agrupan colecciones no delimitadas por las marcas de tiempo de los elementos individuales. Cada ventana contiene un número finito de elementos.

Configura las siguientes ventanas con el SDK de Apache Beam o las extensiones de transmisión de Dataflow SQL:

Ventanas de saltos de tamaño constante

Una ventana de saltos de tamaño constante representa un intervalo de tiempo coherente y disjunto en la transmisión de datos.

Por ejemplo, si estableces una ventana de saltos de tamaño constante de treinta segundos, los elementos con valores de marca de tiempo [0:00:00-0:00:30) se encuentran en la primera ventana. Los elementos con valores de marca de tiempo [0:00:30-0:01:00] estarán en la segunda ventana.

En la siguiente imagen, se ilustra cómo se dividen los elementos en ventana de saltos de tamaño constante de treinta segundos.

Una imagen que muestra ventanas de saltos de tamaño constante, 30 segundos de duración

Ventanas de salto

Una ventana de salto representa un intervalo de tiempo coherente en la transmisión de datos. Las ventanas de salto pueden superponerse, mientras que las ventanas de saltos de tamaño constante son disjuntas.

Por ejemplo, una ventana de salto puede comenzar cada treinta segundos y capturar un minuto de datos y la ventana. La frecuencia con la que comienzan las ventanas de salto se denomina período. Este ejemplo tiene una ventana de un minuto y un período de treinta segundos.

En la siguiente imagen, se ilustra cómo los elementos se dividen en ventanas de saltos de un minuto con un período de treinta segundos.

Una imagen que muestra ventanas de salto con una duración de 1 minuto y un período de 30 segundos

Para tomar promedios de ejecución de datos, usa ventanas de saltos. Puedes usar ventanas de salto de un minuto con un período de treinta segundos para procesar un promedio de un minuto de ejecución cada treinta segundos.

Ventanas de sesión

Una ventana de sesión contiene elementos dentro de una duración de intervalo de otro elemento. La duración del intervalo es un intervalo entre los datos nuevos de una transmisión de datos. Si los datos llegan después de la duración del intervalo, los datos se asignarán a una ventana nueva.

Por ejemplo, las ventanas de sesión pueden dividir una transmisión de datos que representa la actividad del mouse del usuario. Esta transmisión puede tener largos períodos de inactividad intercalados con muchos clics. Una ventana de sesión puede contener los datos que se generan por los clics.

El sistema de ventanas de sesión asigna diferentes ventanas a cada clave de datos. Las ventanas de salto y salto de tamaño constante contienen todos los elementos en el intervalo de tiempo especificado, independientemente de las claves de datos.

En la siguiente imagen, se muestra cómo se dividen los elementos en ventanas de sesión.

Una imagen que muestra ventanas de sesión con una duración de intervalo mínima

Marcas de agua

Una marca de agua es un límite que indica cuándo Dataflow espera que hayan llegado todos los datos de una ventana. Si llegan datos nuevos con una marca de tiempo que está en la ventana, pero anterior a la marca de agua, los datos se considerarán datos tardíos.

Dataflow realiza un seguimiento de las marcas de agua debido a estas razones:

  • No se garantiza que los datos lleguen en orden de tiempo o en intervalos predecibles.
  • No se garantiza que los eventos de datos aparezcan en las canalizaciones en el mismo orden en que se generaron.

La fuente de datos determina la marca de agua. Puedes permitir datos tardíos con el SDK de Apache Beam. Dataflow SQL no procesa datos tardíos.

Activadores

Los activadores determinan cuándo emitir resultados agregados a medida que llegan los datos. De forma predeterminada, los resultados se emiten cuando la marca de agua pasa el final de la ventana.

Puedes usar el SDK de Apache Beam a fin de crear o modificar activadores para cada colección en una canalización de transmisión. No puedes configurar activadores con Dataflow SQL.

El SDK de Apache Beam puede configurar activadores que funcionan con cualquier combinación de las que se detallan a continuación:

  • Hora del evento, como lo indica la marca de tiempo en cada elemento de datos
  • Tiempo de procesamiento, que es el tiempo que se procesa el elemento de datos en una etapa determinada de la canalización.
  • La cantidad de elementos de datos en una colección