Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Batch y streaming son dos semánticas de procesamiento de datos que se usan para cargas de trabajo de ingeniería de datos, incluida la ingesta, la transformación y el procesamiento en tiempo real.
El streaming se asocia normalmente con baja latencia y procesamiento continuo desde buses de mensajes, como Apache Kafka.
Sin embargo, en Azure Databricks tiene una definición más amplia. El motor subyacente de canalizaciones de Lakeflow (Apache Spark y Structured Streaming) tiene una arquitectura unificada para el procesamiento por lotes y streaming:
- El motor puede tratar orígenes como el almacenamiento de objetos en la nube y Delta Lake como orígenes de streaming para un procesamiento incremental eficaz.
- El procesamiento de streaming se puede ejecutar de manera desencadenada y continua, lo que le proporciona la flexibilidad de controlar los costos y los inconvenientes de rendimiento de las cargas de trabajo de streaming.
A continuación se detallan las diferencias semánticas fundamentales que distinguen el procesamiento por lotes del streaming, incluidas sus ventajas y desventajas, así como las consideraciones a tener en cuenta a la hora de elegir entre ambos para sus cargas de trabajo.
Semántica del procesamiento por lotes
Con el procesamiento por lotes, el motor no realiza un seguimiento de los datos que ya se están procesando en el origen. Todos los datos disponibles actualmente en el origen se procesan en el momento del procesamiento. En la práctica, un origen de datos por lotes normalmente se particiona lógicamente, por ejemplo, por día o región, para limitar el reprocesamiento de datos.
Por ejemplo, calcular el precio medio de venta de los artículos, agregado con una granularidad horaria, para un evento de ventas llevado a cabo por una empresa de comercio electrónico se puede programar como procesamiento por lotes para calcular el precio medio de ventas cada hora. Con el lote, los datos de las horas anteriores se vuelven a procesar cada hora y los resultados calculados anteriormente se sobrescriben para reflejar los resultados más recientes.
Semántica de streaming
Con el procesamiento de streaming, el motor realiza un seguimiento de los datos que se procesan y solo procesa los nuevos datos en ejecuciones posteriores. En el ejemplo anterior, puede programar el procesamiento de streaming en lugar del procesamiento por lotes para calcular el precio medio de ventas cada hora. Con el streaming, solo se procesan los nuevos datos agregados al origen desde la última ejecución. Los resultados recién calculados deben anexarse a los resultados calculados anteriormente para comprobar los resultados completos.
Procesamiento por lotes frente al streaming
En el ejemplo anterior, el streaming es mejor que el procesamiento por lotes porque no procesa los mismos datos procesados en ejecuciones anteriores. Sin embargo, el procesamiento de streaming se vuelve más complejo con escenarios como datos de llegada desordenados y de llegada tardía en el origen.
Un ejemplo de datos de llegada tardía es si algunos datos de ventas de la primera hora no llegan al origen hasta la segunda hora:
- En el procesamiento por lotes, los datos de llegada tardía de la primera hora se procesan con datos de la segunda hora y los datos existentes de la primera hora. Los resultados anteriores de la primera hora se sobrescriben y se corrigen con los datos que llegan con retraso.
- En el procesamiento en streaming, los datos de la primera hora que llegan tarde se procesan sin tener en cuenta ninguno de los demás datos de esa misma hora que ya se hayan procesado. La lógica de procesamiento debe almacenar la información de suma y recuento de los cálculos promedios de la primera hora para actualizar correctamente los resultados anteriores.
Estas complejidades del streaming suelen surgir cuando el procesamiento es con estado, como en el caso de uniones, agregaciones y deduplicaciones.
En el procesamiento de streaming sin estado, como la incorporación de nuevos datos procedentes de la fuente, la administración de datos desordenados y de llegada tardía resulta menos compleja, ya que los datos que llegan tarde pueden añadirse a los resultados anteriores a medida que van llegando a la fuente.
En la tabla siguiente se describen las ventajas y desventajas del procesamiento por lotes y streaming y las distintas características del producto que admiten estas dos semánticas de procesamiento en Databricks Lakeflow.
| Procesamiento semántico | Ventajas | Desventajas | Productos de ingeniería de datos |
|---|---|---|---|
| Batch |
|
|
|
| Transmisión en línea |
|
|
|
Recomendaciones
En la tabla siguiente se describe la semántica de procesamiento recomendada en función de las características de las cargas de trabajo de procesamiento de datos en cada capa de la arquitectura medallion.
| Capa Medallion | Características de carga de trabajo | Recomendación |
|---|---|---|
| Bronce |
|
|
| Plata |
|
|
| Oro |
|
|