Configuración de intervalos de desencadenador de Structured Streaming

Structured Streaming de Apache Spark procesa los datos de forma incremental. Controlar el intervalo de desencadenador para el procesamiento por lotes permite usar Structured Streaming para cargas de trabajo, incluido el procesamiento casi en tiempo real, la actualización de bases de datos cada 5 minutos o una vez por hora, o el procesamiento por lotes de todos los datos nuevos de un día o semana.

Dado que Auto Loader de Databricks usa Structured Streaming para cargar datos, comprender cómo funcionan los desencadenadores proporciona la mayor flexibilidad para controlar los costos al ingerir datos con la frecuencia deseada.

Especificación de intervalos de desencadenador basados en tiempo

Structured Streaming hace referencia a intervalos de desencadenador basados en tiempo como "microlotes de intervalo fijo". Mediante la palabra clave processingTime, especifique una duración de tiempo como una cadena, como .trigger(processingTime='10 seconds').

Si se especifica un intervalo de desencadenamiento (trigger) demasiado pequeño (menor que una centésima de segundo), el sistema podría realizar comprobaciones innecesarias para ver si llegan nuevos datos. Configure el tiempo de procesamiento para equilibrar los requisitos de latencia y la velocidad a la que llegan los datos en el origen.

Configuración del procesamiento por lotes incremental

Importante

En Databricks Runtime 11.3 LTS y versiones posteriores, la configuración Trigger.Once está en desuso. Databricks recomienda usar Trigger.AvailableNow para todas las cargas de trabajo de procesamiento por lotes incrementales.

La opción de desencadenador ahora disponible consume todos los registros disponibles como un lote incremental con la capacidad de configurar el tamaño del lote con opciones como maxBytesPerTrigger (las opciones de ajuste de tamaño varían según el origen de datos).

Azure Databricks admite el uso de Trigger.AvailableNow para el procesamiento por lotes incremental desde muchos orígenes de flujo estructurado. En la tabla siguiente, se incluye la versión mínima admitida de Databricks Runtime necesaria para cada origen de datos:

Origen Versión mínima de Databricks Runtime
Orígenes de archivos (JSON, Parquet, etc.) 9.1 LTS
Delta Lake 10.4 LTS
Cargador automático 10.4 LTS
Apache Kafka 10.4 LTS
Kinesis 13.1

¿Cuál es el intervalo de desencadenador predeterminado?

Structured Streaming tiene como valor predeterminado microlotes de intervalo fijo de 500 ms. Databricks recomienda especificar siempre un trigger personalizado para minimizar los costos asociados a la comprobación de si han llegado nuevos datos y al proceso de lotes de tamaño reducido.

Cambio de intervalos de desencadenador entre ejecuciones

Puede cambiar el intervalo de desencadenador entre ejecuciones mientras usa el mismo punto de control.

Si un trabajo de Structured Streaming se detiene mientras se está procesando un microlote, entonces dicho microlote debe completarse antes de que se aplique el nuevo intervalo desencadenador. De esta forma, es posible que observe un procesamiento por microlotes con la configuración especificada anteriormente después de cambiar el intervalo desencadenador.

Al pasar de un intervalo basado en el tiempo al uso deAvailableNow, esto podría dar lugar a un procesamiento de microlotes antes de procesar todos los registros disponibles como un lote incremental.

Al pasar de AvailableNow a un intervalo basado en tiempo, esto puede dar lugar a que continúe procesando todos los registros que estaban disponibles cuando se desencadenó el último trabajoAvailableNow. Este es el comportamiento esperado.

Nota:

Si intenta recuperarse de un error de consulta asociado a un lote incremental, cambiar el intervalo del desencadenador no resuelve este problema porque el lote todavía debe completarse. Databricks recomienda escalar verticalmente la capacidad de proceso utilizada para procesar el lote para intentar resolver el problema. En raras ocasiones, es posible que tenga que reiniciar la secuencia con un nuevo punto de control.

¿Qué es el modo de procesamiento continuo?

Apache Spark admite un intervalo de desencadenador adicional conocido como procesamiento continuo. Este modo se ha clasificado como experimental a partir de Spark 2.3; consulte con el equipo de cuenta de Azure Databricks para asegurarse de comprender las ventajas y desventajas de este modelo de procesamiento.

Tenga en cuenta que este modo de procesamiento continuo no está relacionado con el procesamiento continuo tal y como se aplica en Delta Live Tables.