Passa al contenuto principale
Piattaforma

Annuncio della disponibilità generale della modalità in tempo reale per le pipeline dichiarative di Spark su Databricks

Ottieni latenze inferiori al secondo per i tuoi carichi di lavoro operativi più critici grazie a flussi e sink dichiarativi

di Jerry Peng, Abhay Bothra, Sudhanva Huruli, Navneeth Nair, Anant Pingle e Murali Talluri

  • Annunciamo la disponibilità generale della modalità in tempo reale (RTM) su Spark Declarative Pipelines (SDP), che offre latenze di elaborazione end-to-end nell'ordine dei millisecondi per i carichi di lavoro di streaming operativi.
  • La modalità in tempo reale elimina la necessità di motori specializzati separati come Apache Flink, unendo batch, ETL e streaming a bassa latenza in un unico framework.
  • La modalità in tempo reale consente calcoli in tempo reale e scritture istantanee negli archivi operativi tramite i sink ForEach, alimentando casi d'uso critici per il tempo come il rilevamento delle frodi e la personalizzazione in tempo reale.

Abbiamo introdotto la Real-Time Mode (RTM) l'anno scorso per consentire ai clienti di sviluppare casi d'uso operativi e a bassa latenza. Questa è stata una vera svolta, poiché ha permesso ai clienti di elaborare dati in streaming in pochi millisecondi, fino a 100 volte più velocemente rispetto all'architettura micro-batch tradizionale. Inoltre, non è più stato necessario gestire motori separati e specializzati come Flink insieme ad Apache Spark, eliminando codebase duplicate, modelli di governance frammentati e costi di gestione.

Oggi annunciamo che la RTM in Spark Declarative Pipelines (SDP) è ora generalmente disponibile (Generally Available). SDP è diventato il metodo standard per creare pipeline di streaming ed ETL su Databricks, gestendo automaticamente la risoluzione delle dipendenze, l'elaborazione incrementale, l'orchestrazione, il ripristino in caso di errore e la qualità dei dati. Con RTM, i clienti possono creare pipeline operative a bassa latenza mantenendo tutti i vantaggi di SDP. Che si tratti di analisi delle frodi, avvisi in tempo reale o invio di nuove feature a store operativi, ora puoi usare SDP per tutti questi casi d'uso.

Che cos'è la Real-Time Mode (RTM)?

La RTM è un'evoluzione del motore Apache Spark Structured Streaming che consente di ottenere latenze end-to-end nell'ordine dei millisecondi. Questo risultato viene raggiunto trasmettendo dati in continuo, eseguendo tutte le fasi delle query contemporaneamente e passando i dati da una fase all'altra non appena vengono generati. Per un'analisi approfondita dell'architettura, leggi il blog, “Breaking the microbatch barrier: The architecture of Apache Spark Real-Time Mode.”

La RTM supporta qualsiasi carico di lavoro che tragga vantaggio dalla trasformazione dei dati in decisioni nel giro di pochi millisecondi. Tra i possibili casi d'uso ci sono il rilevamento delle frodi, la personalizzazione in tempo reale, i sistemi di raccomandazione in tempo reale e il calcolo delle feature in tempo reale. Abbiamo confrontato la RTM con Apache Flink su carichi di lavoro reali dei clienti per il calcolo delle feature, e la RTM è fino al 92% più veloce rispetto a motori specializzati come Flink. Di seguito trovi i benchmark. Per ulteriori informazioni sui dataset e sulle query citate, consulta questo repository GitHub.

Apache Spark Real-Time Mode vs. Apache Flink

Perché scegliere la RTM su Spark Declarative Pipelines

I clienti scelgono sempre più spesso SDP per i loro carichi di lavoro ETL. Con la RTM, SDP supporta ora tutti i carichi di lavoro in streaming, inclusi quelli operativi a bassa latenza, consentendo ai clienti di utilizzare un unico framework per tutte le pipeline. Un unico framework significa un solo stack di osservabilità, un unico modello di fatturazione e nessuna frammentazione tra diverse API.

Il serverless di SDP fa un ulteriore passo avanti. Non c'è alcuna risorsa di calcolo da scegliere né alcun cluster da dimensionare. Ottieni una latenza inferiore al secondo senza complesse configurazioni dell'infrastruttura, pagando solo per i core utilizzati dalla tua query.  I flussi RTM beneficiano inoltre di funzionalità SDP quali aggiornamenti senza versione e manutenzione con tempi di inattività ridotti, che diminuiscono sia il lavoro operativo sia le interruzioni dovute agli aggiornamenti.

Un caso d'uso in cui la RTM su SDP ha un impatto immediato è il calcolo delle feature in tempo reale. I modelli di machine learning per il rilevamento delle frodi o la personalizzazione si basano su segnali freschi, come l'importo totale delle transazioni di un utente negli ultimi 10 minuti, per effettuare previsioni accurate. Il calcolo di queste aggregazioni a finestra mobile e il loro caricamento in uno store online nel giro di pochi millisecondi è il punto in cui la RTM su SDP colma il divario. Databricks Feature Store utilizza esattamente questa architettura per garantire una latenza p99 end-to-end di 200ms da Kafka all'online feature store.

Come iniziare con la RTM su SDP

Passaggio 1: Configura la pipeline

La Real-Time Mode richiede che la modalità della pipeline sia impostata su continuous e che spark.databricks.streaming.realTimeMode.enabled sia impostato su true.

Passaggio 2: Definisci un flusso di aggiornamento in tempo reale

La modalità in tempo reale richiede un flusso di aggiornamento. Usa dp.create_sink() per definire la destinazione dell'output, quindi usa il decoratore @dp.update_flow con pipelines.trigger impostato su "RealTime" e target puntato al sink.

Per informazioni sulle origini e sui sink supportati, consulta la documentazione.

Scrittura di feature su qualsiasi sink personalizzato

Casi d'uso come il rilevamento delle frodi o la personalizzazione in tempo reale richiedono non solo che le feature vengano calcolate in tempo reale, ma anche che vengano memorizzate in uno store interrogabile a bassa latenza. Un modello di frode ha bisogno dell'ultima transazione di un cliente prima che venga autorizzata, e un motore di personalizzazione deve leggere ciò che un utente ha appena cercato.

Oggi puoi scrivere su qualsiasi sink personalizzato come Lakebase, Redis o qualsiasi altro store OLTP da SDP utilizzando un ForEach sink. Definisci il writer, registralo come foreach_sink e collegalo a un update_flow.

Le feature arrivano nel tuo store operativo nel giro di pochi millisecondi dalla loro generazione, senza alcuna sincronizzazione intermedia tra offline e online. Le applicazioni e i modelli possono interrogarle a latenza bassissima.
Quali sono le novità per la RTM in modalità serverless?

  • Esecuzione di pipeline RTM a costi inferiori: Raggruppa più flussi RTM in un'unica pipeline anziché assegnare a ciascuna query risorse dedicate. Il sistema ottimizza inoltre automaticamente le partizioni di origine e di shuffle in base al carico di lavoro, consentendo agli utenti di evitare il dimensionamento manuale.
  • Maggiore supporto per i sink: Sink Lakebase nativo per SDP, con gestione integrata dei batch, tentativi automatici e autenticazione gestita da Unity Catalog.

Conclusione

La RTM estende Spark Declarative Pipelines a una nuova classe di carichi di lavoro: applicazioni operative e sensibili alla latenza che richiedono una risposta immediata ai dati in streaming. Portando una latenza inferiore al secondo alle API SDP che il tuo team già utilizza, elimina la necessità di gestire un framework o un motore separato per le tue pipeline più critiche in termini di tempo. Che tu stia creando pipeline di rilevamento delle frodi, motori di personalizzazione o sistemi di calcolo delle feature di machine learning, la real-time mode ti offre la latenza richiesta dalla tua applicazione con la semplicità di SDP.

La Real-Time Mode in Spark Declarative Pipelines è ora generalmente disponibile (Generally Available).

Risorse tecniche

Consulta le seguenti risorse per iniziare a usare la RTM su SDP:

FAQ

Che cos'è la Real-Time Mode (RTM) in Spark Declarative Pipelines?

La real-time mode (RTM) consente a Spark Declarative Pipelines (SDP) di elaborare dati in streaming con una latenza end-to-end nell'ordine dei millisecondi. Trasmette dati in continuo, esegue tutte le fasi delle query contemporaneamente e passa i dati da una fase all'altra non appena vengono generati. Le pipeline in tempo reale beneficiano dell'orchestrazione di SDP e del ripristino automatico in caso di errore.

La Real-Time Mode è disponibile in Spark Declarative Pipelines?

Sì. La modalità in tempo reale su Spark Declarative Pipelines è ora generalmente disponibile. Porta la modalità in tempo reale già disponibile in Spark Structured Streaming alle pipeline SDP.

Come faccio ad attivare la modalità in tempo reale in una pipeline?

Imposta la pipeline sulla modalità continuous e imposta spark.databricks.streaming.realTimeMode.enabled su true. Quindi definisci un flusso di aggiornamento con pipelines.trigger impostato su "RealTime" e una destinazione che punta a un sink.

Una pipeline in tempo reale può scrivere su Lakebase o su un altro archivio OLTP?

Sì. Definisci un sink ForEach con un writer che implementa open, process e close, quindi punta un flusso in tempo reale verso di esso. Funziona per Lakebase, Redis o qualsiasi altro archivio OLTP.

Per quali casi d'uso è progettata la modalità in tempo reale in Spark Declarative Pipelines?

La modalità in tempo reale è pensata per i carichi di lavoro operativi che trasformano i dati in streaming in decisioni nel giro di millisecondi. Gli esempi includono il rilevamento delle frodi, la personalizzazione in tempo reale, i consigli in tempo reale e il calcolo delle feature in tempo reale. Il feature store di Databricks utilizza questa architettura per raggiungere una latenza p99 di 200 ms da Apache Kafka al feature store online.

(Questo post sul blog è stato tradotto utilizzando strumenti basati sull'intelligenza artificiale) Post originale

Tag correlati:

Streaming di dati, Ingegneria dei dati e Annunci

Ricevi gli ultimi articoli nella tua casella di posta

Iscriviti al nostro blog e ricevi gli ultimi articoli direttamente nella tua casella di posta.