Directivas de asimetría de tiempo (Azure Stream Analytics)

En Stream Analytics, todos los eventos de flujo de datos tienen asociada una marca de tiempo . Los usuarios pueden usar la palabra clave TIMESTAMP BY para elegir entre una de estas dos veces diferentes:

  • Hora de la aplicación, es decir, la hora en que se generan los eventos (como marca la aplicación o el dispositivo que genera los eventos). Al usar la hora de la aplicación, puede procesar todos los eventos mediante una escala de tiempo global o analizar cada dispositivo o partición mediante su propia escala de tiempo mediante substreams;
  • Hora de llegada, la hora en que el evento alcanzó la nube (por ejemplo, hora de llegada en IoT Hub o centro de eventos).

Además de la elección de la marca de tiempo, es posible que los usuarios necesiten definir la directiva De llegada tardía y de pedidos fuera de pedido debido a los siguientes problemas:

  • Los productores de los eventos tienen sesgos de reloj. Esto es común cuando los productores son de diferentes máquinas, por lo que tienen relojes diferentes.
  • Debido a la latencia de red, los eventos se originan desde el mismo reloj pueden llegar al centro de eventos o IoT Hub en un orden diferente desde el momento en que se originaron.
  • Sesgos de reloj entre particiones. Cuando se usan consultas sin particiones, los eventos de todas las particiones se combinan mediante la marca de tiempo de la elección del usuario. Las asimetrías de reloj entre las particiones pueden dar lugar a retrasos en el procesamiento, ya que la fusión debe esperar a la partición más lenta.

Los flujos de entrada que no están en orden pueden ser:

  • Ordenado (y, por lo tanto, retrasado).
  • Los ajusta el sistema, según la directiva especificada por el usuario.

Stream Analytics admite eventos tardíos y desordenados cuando se procesan por tiempo de aplicación.

Directiva fuera de orden

Tener eventos ordenados por tiempo es muy importante en el análisis de streaming. Sin embargo, debido a los 3 problemas mencionados anteriormente, suele ser el caso de que se reciban desordenados, lo que puede afectar a los resultados de nuestras consultas. La directiva desordenada permite reordenar los eventos por marca de tiempo cuando llegan dentro de la ventana de tolerancia definida. Los eventos que llegan más tarde que la tolerancia se quitan o se ajustan, dependiendo de la configuración que elija.

  • Ajustados: se ajustan para parecer que han llegado a la última hora aceptable.
  • Descartados: los eventos descartados.

Esta configuración se puede ajustar en el Azure Portal (en la pestaña "Orden de eventos" de un trabajo). Para obtener más información, consulte la página consideraciones sobre el orden de eventos.

Al establecer una directiva desordenado superior a 0, Stream Analytics almacenará en búfer los eventos hasta esa ventana y los reordenará con la marca de tiempo definida por el usuario antes de aplicar la transformación temporal. Por lo general, a partir de una ventana de 3 segundos primero es un procedimiento recomendado recomendado y, a continuación, ajustar el valor para reducir el número de eventos que se ajustan el tiempo. Tenga en cuenta que, debido al almacenamiento en búfer, el efecto secundario es que la salida se retrasa en la misma cantidad de tiempo. Como resultado, tendrá que ajustar el valor para reducir el número de eventos desordenados y mantener la latencia baja.

Tolerancia de llegada tardía

La ventana de tolerancia de llegada tardía se usa para tener en cuenta el retraso en los eventos que llegan al origen de entrada debido a varios motivos descritos anteriormente. En pocas palabras, el período de llegada tardía es el retraso máximo entre la generación de eventos y la recepción del evento en el origen de entrada. Primero tiene lugar el ajuste basado en la tolerancia de llegada tardía y, luego, se abordan los elementos desordenados. La columna System.Timestamp() tendrá asignada la marca de tiempo final al evento.

Esta configuración solo es válida cuando el procesamiento se realiza por tiempo de aplicación. Si no es así, se omite. También se puede establecer en el Azure Portal (en la pestaña "Orden de eventos" de un trabajo). Para obtener más información, consulte la página consideraciones sobre el orden de eventos.

Cuando un evento es tarde, se ajusta la marca de tiempo a la hora de puesta en cola actual en el origen de entrada menos la ventana de tolerancia de llegada tardía (o se quita, dependiendo de la acción elegida). Cuando hay varias particiones del mismo flujo de entrada o se combinan varios flujos de entrada entre sí, la tolerancia de llegada tardía es la cantidad máxima de tiempo que cada partición espera nuevos datos.

Tolerancia a la llegada tardía y eventos dispersos

La directiva de llegada tardía permite a Stream Analytics mover el tiempo de avance y generar la salida de forma más temporal en ausencia de eventos de entrada. Esto es muy útil cuando los eventos de entrada son dispersos (o no se reciben en absoluto en algunas de las particiones del centro de eventos).

Por ejemplo, los eventos de entrada se generan una vez cada minuto para una consulta select*. Sin usar esta directiva, Stream Analytics no puede generar resultados de salida hasta que los eventos lleguen a todas las particiones del centro de eventos (para avanzar el tiempo). Esto puede significar 16 minutos si el centro de eventos tiene 16 particiones y que cada evento se entrega a una partición diferente. Con la directiva predeterminada de 5 segundos, el reloj se mueve hacia delante 5 segundos después del primer evento, por lo que el evento de salida se genera 5 segundos después del primer evento.

Consulte también

Administración de tiempo (Azure Stream Analytics)
System.Timestamp() (Stream Analytics)
TIMESTAMP BY (Azure Stream Analytics)
Consideración del orden de eventos