Apache Spark’s™ Las capacidades de transmisión han evolucionado dramáticamente desde su inicio, comenzando con un procesamiento simple sin estado donde cada pedazo funcionaba de forma independiente. La verdadera transformación llegó con la apéndice de capacidades de procesamiento con estado a través de API como mapGroupsWithState
y más tarde flatMapGroupsWithState
permitiendo a los desarrolladores nutrir y renovar el estado a través de la transmisión de micro-lotes. Estas operaciones con estado abrieron posibilidades para el procesamiento de eventos complejos, la detección de anomalías y el registro de patrones en flujos de datos continuos.
La última incorporación de la transmisión estructurada de Apache Spark, transformWithState
representa una crecimiento significativa en el procesamiento de flujo con estado y ofrece varias ventajas sobre sus predecesores,flatMapGroupsWithState
y applyInPandasWithState,
para ejecutar el procesamiento caprichoso de estado de estado de forma más efectiva. Con Apache Spark 4.0, este ámbito ha tocado nuevas jefatura de viveza y rendimiento. Esta última crecimiento ofrece el conjunto de herramientas integral necesario para construir aplicaciones sofisticadas de datos en tiempo auténtico que mantengan el contexto a lo extenso del tiempo mientras procesan millones de eventos por segundo.
Marco de inmersión profunda
Consideraremos monitoreo ambiental Los sistemas como un ejemplo para demostrar metamorfosear las capacidades de INTRAJETINPANDAS, donde recopilamos, procesamos y analizamos flujos continuos de datos de sensores. Si aceptablemente nuestro ejemplo se centra en los datos ambientales, el mismo enfoque se aplica a muchos casos de uso activo, como telemetría de equipos, seguimiento logístico o automatización industrial.
La almohadilla
Imagine que está monitoreando la temperatura, la humedad, los niveles de CO2 y las partículas de una ubicación durante un período de tiempo, y necesitamos activar una alerta si alguno de los títulos promedio de estas mediciones va por debajo de un acceso.
Aquí es donde entran en conjunto las API de valoras. Se pueden usar para acumular el estado como primitivas o estructuras complejas. Veamos cómo funciona.
Implementación valente
Comencemos con un solo sensor. Cada pocos segundos, este sensor envía una ojeada que parece la sucesivo:
Para cada sensor, ubicación y ciudad, necesitamos nutrir un estado que rastree no solo las condiciones actuales sino todavía el contexto histórico. Puede pensar en esto como la memoria del sensor, realizando un seguimiento de todo, desde la última marca de tiempo leída hasta la cantidad de alertas generadas. Diseñamos nuestro esquema de valoración para capturar esta imagen completa:
Juntar datos ambientales en una tabla delta
Posteriormente de concretar nuestro procesador con estado como como TemperatureMonitor
pasaremos el procesador al transformWithStateInPandas
cámara y persistir la salida en una tabla delta. Esto asegura que TemperatureMonitor's
Los datos están disponibles para servicios y disección externos.
Inspeccionar la salida
Veamos los datos procesados por TemperatureMonitor
y almacenado en las tablas delta de salida. Tiene las lecturas ambientales de múltiples sensores en diferentes lugares (París, Nueva York, Londres, Tokio y Sydney) conexo con sus alertas activadas.
Como puede ver, TransformwithState nos ayuda a procesar efectivamente el estado y proyectar varias alertas ambientales para una adhesión humedad, temperatura, niveles de CO2, etc., en diferentes ubicaciones.
Mandato de la historia ambiental
Ahora imaginemos una ciudad donde los sensores monitorean continuamente las condiciones ambientales en diferentes lugares. Cuando se produce una pico de temperatura, los administradores de la ciudad pueden carecer retener: ¿es este un problema localizado o un problema en toda la ciudad?
Las API de ListState extienden la trámite estatal para manejar las colecciones ordenadas, perfectas para datos de series de tiempo y disección histórico. Esto se vuelve crucial al rastrear patrones y tendencias a través de una andana de tiempo o un linde caprichoso que elegimos.
Implementación de ListState: almacenamiento histórico inteligente para ciudades
Consideremos un escena en el que una ciudad contiene múltiples sensores de transmisión de datos constantemente. Cuando cualquier ubicación interiormente de la ciudad informa una temperatura que excede nuestro acceso de 25 ° C, entonces capturamos los datos y los almacenamos en un estatal de listados de tiempo:
En el sucesivo ejemplo, usamos el EnvironmentalMonitorListProcessor
clase y liststate conexo con el TTL incorporado (Time to Live) para nutrir este historial de los datos del sensor con una frescura de una hora:
Expire los títulos de estado antiguos usando el tiempo para comportarse (TTL)
Los títulos de estado utilizados por transformwithState admiten un tiempo opcional para comportarse (TTL) Valencia, que se calcula en función del tiempo de procesamiento del valencia más una duración establecida en milisegundos. Cuando el TTL expira, el valencia correspondiente se desalienta de la tienda estatal.
TTL con ListState es crucial para nutrir automáticamente solo datos relevantes interiormente de un objeto de estado, ya que elimina automáticamente registros obsoletos luego de un período de tiempo especificado.
En este ejemplo, TTL asegura que los disección de toda la ciudad sigan siendo actuales y relevantes. Cada entrada de estado obtiene una marca de tiempo de vencimiento, y una vez que expira, el estado se limpia automáticamente, evitando el crecimiento del estado ilimitado mientras mantiene el nuevo contexto histórico de la ciudad.
Registro de patrones en toda la ciudad
Con el historial almacenado en el objeto ListState, podemos detectar patrones y realizar varios cálculos. Por ejemplo, en EnvironmentalMonitorListProcessor
Determinamos las tendencias de temperatura comparando la ojeada presente con la ojeada histórica más nuevo.
Configuración de la consulta de transmisión
Ahora vamos a cablear EnvironmentalMonitorListProcessor
En una tubería de transmisión, guarde los resultados en una tabla delta e inspecciona más.
Inspeccionar la salida
Como puede ver en la captura de pantalla antedicho, la tabla delta ahora muestra disección temporal en todas las ubicaciones. Al combinar el almacenamiento temporal de ListState con el disección a nivel de la ciudad, hemos creado un sistema que no solo detecta problemas ambientales, sino que comprende su contexto y crecimiento en las ciudades enteras. Las API ListState, conexo con la trámite de TTL, proporcionan una forma competente de manejar datos ambientales históricos al tiempo que evitan el crecimiento del estado ilimitado, lo que lo hace ideal para los sistemas de monitoreo ambiental en toda la ciudad.
Realización de disección basados en la ubicación
Ahora imaginemos un escena en el que los planificadores de la ciudad inteligente despliegan sensores ambientales en diversas zonas urbanas, desde intersecciones ocupadas del centro hasta vecindarios residenciales y complejos industriales. Cada zona tiene estándares ambientales únicos que varían según la hora del día y la temporada.
Usando las API MAPSTate, el sistema puede nutrir lecturas ambientales específicas de la ubicación e identificar ubicaciones donde las lecturas exceden los umbrales aceptables. Esta obra utiliza ubicaciones de la ciudad como claves para el monitoreo paralelo en múltiples entornos, preservando títulos de medición máximos para rastrear tendencias ambientales importantes al tiempo que evita el crecimiento del estado ilimitado.
El EnvironmentalMonitorProcessor
Aprovecha las sofisticadas capacidades de almacenamiento de valencia secreto de MapState para organizar datos por ubicación interiormente de las ciudades. Esto permite el disección en tiempo auténtico de las condiciones cambiantes en diferentes entornos urbanos, transformando los datos del sensor sin procesar en inteligencia procesable para la trámite ambiental urbana.
Dialéctica de procesamiento
La estructura de mapstate se inicializa con la ubicación como la secreto de la sucesivo forma:
El proceso de puesta al día de estado en nuestra implementación toma los títulos máximos para cada parámetro ambiental, asegurando que rastreemos los niveles máximos de contaminación en cada ubicación:
Configuración de la consulta de transmisión
La implementación ahora se puede integrar en una tubería de transmisión estructurada de chispa de la sucesivo forma:
Inspeccionar la salida
La salida de la tabla delta ahora muestra un monitoreo ambiental integral en múltiples ubicaciones/ciudades.
Ponlo juntos
En las secciones anteriores, hemos demostrado cómo varios casos de uso de monitoreo ambiental se pueden apoyar fácilmente utilizando la nueva API de transformación en API en Apache Spark. En prontuario, la implementación antedicho puede habilitar los siguientes casos de uso:
- Monitoreo de acceso multiparamétrico: detección en tiempo auténtico de violaciones a través de la temperatura, la humedad, el CO2 y los niveles de PM2.5
- Alerta en tiempo auténtico: notificación inmediata de los cambios en la condición ambiental
- Monitoreo de la ciudad paralela: seguimiento independiente de múltiples áreas urbanas
La debuggabilidad y la observabilidad mejoradas
Unido con el código de la tubería que se muestra en lo alto, una de las nuevas características más potentes de la API de transformación de transformación es su integración perfecta con el leedor estatal En Apache Spark. Esta capacidad proporciona una visibilidad sin precedentes en el estado interno mantenido por nuestro sistema de monitoreo ambiental, lo que hace que el expansión, la depuración y el monitoreo activo sean significativamente más efectivos.
Camino a la información estatal
Al gobernar un sistema crítico de monitoreo ambiental en múltiples ciudades, comprender el estado subyacente es esencial para solucionar anomalías, confirmar la integridad de los datos y asegurar un funcionamiento adecuado del sistema. El leedor de fuente de datos del estado nos permite consultar tanto metadatos de suspensión nivel como títulos de estado detallados.
Inspeccionar la salida
Como se muestra en la captura de pantalla a continuación, los usuarios ahora pueden obtener golpe de golondrino fino a todas sus filas de estado para todos los tipos compuestos, aumentando en gran medida la depugabilidad y la observabilidad de estas tuberías.
Conclusión
La API de transformación de APACHE Spark ™ 4.0 representa un avance significativo para el procesamiento caprichoso con estado en las aplicaciones de transmisión. Con el caso de uso de monitoreo ambiental antedicho, hemos demostrado cómo los usuarios pueden construir y ejecutar potentes cargas de trabajo operativas utilizando la nueva API. Su enfoque orientado a objetos y su conjunto de características robustas permiten el expansión de tuberías de transmisión avanzadas que pueden manejar requisitos complejos mientras mantienen la confiabilidad y el rendimiento. ¡Alentamos a todos los usuarios de Spark a probar la nueva API para sus casos de uso de transmisión y exprimir todos los beneficios que esta nueva API tiene para ofrecer!