Passa al contenuto principale
Annunci

Presentazione di Apache Spark 4.2

Ora disponibile in Databricks Runtime 19 Beta

di Wenchen Fan, Andreas Neumann, Serge Rielau, Szehon Ho, Gengliang Wang, Linhong Liu, Hyukjin Kwon, Jerry Peng, DB Tsai, Xiao Li e Reynold Xin

  • Definisci un contesto affidabile per analytics e AI: le viste metriche creano definizioni aziendali controllate, mentre il recupero vettoriale, i tipi geospaziali e primitive SQL più ricche portano l'analytics nativa per l'AI in Spark.
  • Accedi a Spark da più applicazioni: Spark Connect, l'esecuzione Python Arrow-first, la compatibilità PySpark migliorata e le Python Data Sources rendono Spark più facile da usare da servizi, strumenti e agenti AI.
  • Mantieni i dati aggiornati e pronti per la produzione: Auto CDC, Data Source V2, le query CHANGES, la Real-Time Mode e i miglioramenti della piattaforma semplificano l'elaborazione affidabile di dati in continuo mutamento.

Introduzione

Apache Spark 4.2 sposta una parte maggiore del moderno stack di dati e IA direttamente all'interno dell'engine. Basandosi su Spark 4.x, questa release aggiunge metriche governate, primitive vettoriali e top-K, un percorso Python più orientato ad Arrow, un sistema di change data capture di primo livello e fondamenta operative e di streaming più solide.

Questo rende Spark più utile su entrambi i lati di un'applicazione di IA. Migliora la qualità e la freschezza dei dati forniti agli agenti di IA e rende Spark più facile da richiamare come servizio di esecuzione remota da parte di applicazioni e agenti. L'approccio all'IA è concreto: semantica affidabile, primitive di recupero native, dati modificati aggiornati e interfacce aperte per il calcolo su scala Spark.

Spark 4.2 può essere compreso attraverso quattro vantaggi principali:

  • Definisci la verità una sola volta: le viste delle metriche inseriscono metriche aziendali governate in Spark, in modo che SQL, strumenti di BI, applicazioni e sistemi di IA possano utilizzare le stesse definizioni.
  • Raggiungi Spark da ovunque: i miglioramenti a Spark Connect, PySpark, Arrow e Python Data Source rendono Spark più facile da richiamare da servizi ed ecosistemi Python.
  • Esegui analisi native per l'IA in SQL: funzioni vettoriali, NEAREST BY, sketch, ranking e tipi geospaziali portano più blocchi analitici direttamente in Spark SQL.
  • Sposta i dati in continua evoluzione in modo sicuro: Auto CDC, l'interfaccia CHANGES, Data Source V2 e Real-Time Streaming rendono più semplice elaborare correttamente i dati in continua evoluzione.

Insieme, queste modifiche aiutano le organizzazioni a utilizzare un unico engine aperto per preparare i dati, definire il significato aziendale, recuperare il contesto pertinente e mantenere aggiornate le applicazioni analitiche e di IA.

Metriche e modellazione semantica: definisci la verità una sola volta

Spark 4.2 introduce le viste delle metriche, portando un livello semantico nativo in Spark SQL. I team possono definire le metriche aziendali una sola volta e utilizzarle in modo coerente in dashboard, report, applicazioni e strumenti di IA.

Questo è importante perché molte metriche rilevanti non sono additive in modo sicuro. Rapporti, conteggi distinti, retention e misure simili possono produrre risultati errati quando ogni utente riscrive la formula con una granularità diversa. Le viste delle metriche rendono le dimensioni e le misure oggetti di primo livello comprensibili per Spark, consentendo all'engine di preservare la semantica di aggregazione prevista.

Una volta definita una vista delle metriche, gli utenti possono interrogare le stesse misure governate in base a diverse dimensioni:

Per le applicazioni di IA, questo è particolarmente importante. Un agente non dovrebbe calcolare i ricavi in modo diverso rispetto a una dashboard, né restituire una risposta diversa quando un utente modifica il raggruppamento richiesto. Una vista delle metriche governata offre a SQL, BI e IA un'unica fonte di verità, con l'analisi di Spark, la risoluzione del catalogo e le autorizzazioni applicate in modo coerente.

Spark Connect e PySpark: raggiungi Spark da ovunque

Spark come API di servizio

Spark Connect separa il client dal server Spark attraverso un protocollo basato su gRPC e Arrow. Un client crea un piano logico, il server lo analizza e lo esegue, e i risultati vengono restituiti come batch Arrow. Il client non ha bisogno di un runtime Spark completo o di una JVM co-allocata.

Questo rende Spark più facile da integrare in notebook, servizi, strumenti di sviluppo e applicazioni di IA. Un agente o un'applicazione può richiamare Spark dal proprio runtime, mentre Spark mantiene l'analisi, l'ottimizzazione, l'esecuzione e la governance sul server.

Spark 4.2 continua a ridurre il divario di compatibilità con Spark Classic. I miglioramenti includono una migliore compatibilità con le API RDD, input DataFrame per spark.read.* e SparkSession.emptyDataFrame, debug semplificato, propagazione degli errori, report sullo stato e supporto per la modalità cluster YARN. Insieme, queste modifiche rendono PySpark e Spark Connect più veloci, più compatibili e più facili da gestire su scala e da remoto.

Un percorso Python più orientato ad Arrow

Python rimane uno dei modi principali in cui gli utenti creano carichi di lavoro di dati e IA con Spark. In Spark 4.2, l'esecuzione delle UDF Python ottimizzate per Arrow è abilitata per impostazione predefinita, consentendo alle UDF esistenti di utilizzare il percorso colonnare più rapido senza dover riscrivere il codice. Il supporto per Pandas 3 semplifica inoltre l'aggiornamento degli ambienti Python insieme a Spark.

Per il codice che richiede un maggiore controllo, le UDF Arrow mantengono i dati negli array PyArrow ed evitano una conversione Pandas non necessaria. Spark amplia inoltre la profilazione e il debug per l'esecuzione di Python, includendo la profilazione di tempi e memoria per i Python Data Source, una diagnostica dei worker migliorata e log che possono essere interrogati come dati.

Spark 4.2 migliora anche l'interoperabilità attraverso l'interfaccia Arrow C Data e il protocollo PyCapsule. Quando entrambi i lati lo supportano, i DataFrame di Spark possono passare a strumenti nativi di Arrow come Polars o DuckDB senza copiare o serializzare i dati sottostanti. Ciò riduce il codice di integrazione tra l'elaborazione su scala Spark e il più ampio ecosistema Python e di IA.

I Python Data Source riducono ulteriormente l'attrito di integrazione. I team possono creare lettori e scrittori batch o in streaming in Python, registrarli una sola volta e utilizzarli tramite l'interfaccia standard dei data source di Spark. In 4.2, la profilazione rende questi connettori più facili da ottimizzare e gestire, anziché trattarli come scatole nere.

Spark SQL: analisi native per l'IA nell'engine

Punteggio vettoriale e recupero top-K

Spark 4.2 aggiunge nuove primitive SQL per la ricerca di somiglianza vettoriale, il ranking e l'analisi delle serie temporali. La release introduce funzioni di distanza e somiglianza vettoriale, normalizzazione vettoriale, aggregazione vettoriale e NEAREST BY, un join di ranking top-K per la corrispondenza basata sulla distanza. Queste primitive consentono il recupero, i consigli, la risoluzione delle entità e la generazione di candidati su scala.

Analisi geospaziale nativa

I tipi integrati GEOMETRY e GEOGRAPHY e le funzioni ST_* consentono analisi basate sulla posizione senza estensioni spaziali esterne. Spark 4.2 aggiunge anche il supporto per Parquet, WKT/WKB, la preservazione di SRID e la conversione Python.

Funzioni integrate e viste temporanee completamente qualificate

Con Spark 4.2 puoi richiamare in modo univoco le funzioni fornite da Spark qualificandole con SYSTEM.BUILTIN. Seguendo il precedente delle variabili di sessione, puoi anche qualificare completamente le viste temporanee con SYSTEM.SESSION. Questo è utile per evitare ambiguità con le funzioni definite dall'utente o le relazioni persistenti e per prevenire l'injection.

Percorso di ricerca SQL

Spark 4.2 aggiunge il supporto per il percorso di ricerca SQL con SET PATH, semplificando la risoluzione di tabelle, funzioni e variabili tra spazi dei nomi e librerie di oggetti semplicemente aggiungendo schemi al percorso.

Spark rende persistente il percorso SQL nelle viste e nelle funzioni SQL per una risoluzione dei nomi prevedibile.

A partire da Spark 4.2, gli script SQL possono eseguire DECLARE, OPEN, FETCH e CLOSE sui cursori. Ciò consente un maggiore controllo sull'elaborazione riga per riga dei set di risultati, che in passato richiedeva di uscire da SQL per utilizzare i DataFrame.

Spark SQL aggiunge anche Tuple sketch, time_bucket per l'analisi delle serie temporali, un supporto più ampio per i tipi TIME tra i formati di file, QUALIFY per filtrare i risultati delle finestre, Top-K max_by e min_by, e il supporto IGNORE NULLS e RESPECT NULLS per le funzioni di aggregazione comuni.

Insieme, queste aggiunte rendono Spark SQL più espressivo per le moderne applicazioni analitiche.

Spark Declarative Pipelines e Auto CDC: sposta i dati in continua evoluzione in modo sicuro

Spark 4.2 introduce il supporto per Auto CDC in Spark Declarative Pipelines (SDP), portando l'elaborazione SCD (Slow Changing Dimensions) Type 1 di primo livello in Spark. Prima di Auto CDC, l'utilizzo di un feed di modifiche e la sua applicazione a una tabella di destinazione richiedevano una logica di merge scritta a mano che poteva facilmente diventare complessa e soggetta a errori, a causa della gestione delle eliminazioni e degli eventi di modifica non in ordine. Con Auto CDC, gli utenti possono semplicemente configurare il modo in cui gli eventi CDC devono aggiornare una tabella di destinazione e lasciare che Spark gestisca le complessità.

Auto CDC fornisce un'API Python per applicare le modifiche CDC a una tabella di destinazione SCD Type 1. È progettato per i comuni carichi di lavoro di inserimento e replica in cui l'ultima versione di ciascun record deve essere mantenuta in modo affidabile, come profili cliente, cataloghi di prodotti, record di account e dati di riferimento operativi.

Ad esempio, un flusso Auto CDC può ora essere espresso in modo dichiarativo:

Oltre ad Auto CDC, anche le Spark Declarative Pipelines beneficiano di un importante consolidamento della piattaforma, tra cui una gestione lato server più sicura per l'analisi eager e identificatori strutturati per i flussi. Insieme, queste modifiche rendono più affidabile lo sviluppo di pipeline dichiarative e forniscono a Spark una base per pattern di data engineering di livello superiore.

Real-Time Mode in Structured Streaming: dati operativi più freschi

La Real-Time Mode (RTM) in Structured Streaming consente alle query di streaming di elaborare i dati con una latenza end-to-end nell'ordine dei millisecondi. Questo ha aiutato Spark a sbloccare intere nuove classi di casi d'uso e sta diventando la base per applicazioni di dati operativi come il rilevamento delle frodi, la personalizzazione, l'osservabilità e il feature engineering in tempo reale.

In Spark 4.2, abbiamo esteso la RTM a PySpark: ora è possibile eseguire query di streaming stateless (senza UDF Python) in Real-Time Mode. Python è una scelta molto diffusa tra data scientist e ingegneri per la sua facilità d'uso, e questo porta l'elaborazione a bassa latenza di RTM a un pubblico molto più ampio.

In vista del prossimo rilascio di Spark 4.x, stiamo introducendo il supporto stateful per RTM, e i lavori sono già in corso. L'iniziativa è tracciata in SPARK-54699 con tre componenti principali:

  • Un nuovo shuffle di streaming (SPARK-56664) que inoltra i dati dalle fasi a monte (upstream) a quelle a valle (downstream) non appena sono pronti, invece di attendere il completamento di una fase
  • Pianificazione simultanea delle fasi (SPARK-57000), che consente l'esecuzione contemporanea di più fasi
  • Supporto per operatori stateful (SPARK-57228), a partire da transformWithState

Oltre al supporto stateful, stiamo lavorando anche per abilitare le UDF Python (SPARK-57237) in RTM.

Resta sintonizzato! Feedback e contributi sono sempre benvenuti.

Data Source V2: un'unica interfaccia per sorgenti dati in evoluzione

Spark 4.2 segna un altro importante passo avanti per Data Source V2. DSv2 sta diventando la base standard per i connettori che espongono letture, scritture, operazioni a livello di riga, evoluzione dello schema, change data, metriche operative e transazioni tramite Spark.

CDC in DSv2

Spark 4.2 aggiunge il supporto nativo per il change data capture a DSv2. I connettori possono esporre flussi di modifiche tramite un'API standard e gli utenti possono interrogarli con la nuova clausola SQL CHANGES, le API DataFrame e i binding PySpark. Spark gestisce anche la post-elaborazione comune direttamente nel motore, eliminando i residui di copy-on-write, rilevando gli aggiornamenti e calcolando le modifiche nette per riga. La stessa query si comporta in modo coerente su qualsiasi connettore DSv2 che supporti il CDC.

Operazioni a livello di riga, evoluzione dello schema e transazioni

Spark 4.2 migliora ulteriormente il supporto per le operazioni DML a livello di riga nei connettori Data Source V2 (DSv2). MERGE INTO riceve ulteriori miglioramenti delle prestazioni, tra cui la generazione di codice per l'intera fase (whole-stage code generation), insieme a ulteriori ottimizzazioni per le funzionalità di evoluzione dello schema introdotte in Spark 4.1.

L'evoluzione dello schema è ora supportata anche per le operazioni INSERT INTO, sia per la risoluzione delle colonne basata sul nome che su quella basata sulla posizione, riducendo gli attriti durante la scrittura in tabelle in evoluzione. Inoltre, i riepiloghi delle operazioni sono ora disponibili per UPDATE e DELETE, integrando i riepiloghi di MERGE INTO aggiunti in Spark 4.1. Anche le metriche di MERGE INTO sono state ampliate e perfezionate.

Spark 4.2 introduce ulteriori elementi fondamentali per connettori DSv2 pronti per la produzione e formati di tabelle lakehouse. Le aggiunte principali includono le basi di un'API di transazione, un filtraggio avanzato delle statistiche di partizione, miglioramenti ai join partizionati per storage e un allineamento più stretto tra i comandi e i comportamenti di DSv1 e DSv2. Insieme, questi miglioramenti rendono DSv2 una piattaforma più completa per l'implementazione di connettori lakehouse, formati di tabelle transazionali e altri sistemi di dati su larga scala.

Miglioramenti significativi e ringraziamenti

Spark 4.2 include diversi miglioramenti della piattaforma che rendono Spark più facile da gestire, sottoporre a debug, proteggere e scalare. L'interfaccia utente web di Spark (Spark Web UI) riceve una significativa modernizzazione con Bootstrap 5, modalità scura, una migliore visualizzazione del piano SQL, miglioramenti alla timeline delle query e paginazione lato server. Il supporto per Kubernetes migliora grazie alla gestione eterogenea degli executor, ad API stabili per il resource manager e a un ridotto sovraccarico del control-plane. Spark 4.2 aggiunge inoltre il supporto per JDK 25, migliora la sicurezza web, scala lo Spark History Server e aggiorna le dipendenze chiave tra cui Scala, Parquet, ORC, Arrow, Netty e Hadoop.

Spark 4.2 riflette la forza della community di Apache Spark, con oltre 1.900 commit da parte di più di 260 collaboratori. Ringraziamo tutti coloro che hanno contribuito con codice, revisioni, test, documentazione e feedback per rendere possibile questo rilascio.

image2.png

Inizia a usare Spark 4.2

Scarica Apache Spark 4.2 da spark.apache.org/downloads e consulta le note di rilascio complete di Apache Spark 4.2 per l'elenco completo delle modifiche. Apache Spark 4.2 sarà disponibile anche in Databricks Runtime 19 Beta.

image1.png

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

Ricevi gli ultimi articoli nella tua casella di posta

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