Snowpark Connect per Apache Spark™ in public preview. Il tuo Spark Client, ora Powered by Snowflake.

Nella versione 3.4, la community Apache Spark™ ha introdotto Spark Connect. La sua architettura client-server disaccoppiata separa il codice dell'utente dal cluster Spark in cui viene eseguito il lavoro. Questa nuova architettura consente ora di eseguire il codice Spark in un warehouse Snowflake eliminando la necessità di eseguire il provisioning e la manutenzione dei cluster Spark.
Siamo lieti di annunciare la public preview di Snowpark Connect for Spark. Con Snowpark Connect, i clienti possono sfruttare il potente motore vettoriale Snowflake per il proprio codice Spark, evitando al contempo la complessità del mantenimento o del tuning di ambienti Spark separati, tra cui la gestione delle dipendenze, la compatibilità delle versioni e gli aggiornamenti. Ora puoi eseguire tutto il codice Spark DataFrame, Spark SQL e UDF con Snowflake.
Utilizzando il runtime di elaborazione elastico di Snowflake con i virtual warehouse, Snowpark Connect for Spark offre il meglio di due mondi: la potenza del motore Snowflake e la familiarità con il codice Spark, il tutto riducendo i costi e accelerando lo sviluppo. Le organizzazioni non avranno più bisogno di cluster Spark dedicati. Scrivi o integra Spark SQL, DataFrame e UDF compatibili per eseguirli direttamente sulla piattaforma Snowflake. Snowflake gestisce automaticamente tutto il tuning delle prestazioni e la scalabilità, liberando gli sviluppatori dal carico operativo di gestione di Spark. Inoltre, portando l’elaborazione dei dati in Snowflake, si stabilisce un framework di governance unico e robusto a monte, che aiuta a garantire coerenza e sicurezza dei dati per l’intero ciclo di vita senza sforzi ridondanti.

I clienti che utilizzano Snowpark Client per creare pipeline di dati nei linguaggi Python, Java e Scala in media ottengono:
Prestazioni 5,6 volte più veloci rispetto a Spark gestito
41% di risparmio rispetto a Spark gestito
Con il lancio di Snowpark Connect for Spark, puoi ottenere gli stessi vantaggi dell’esecuzione di Snowpark senza bisogno di convertire il codice per utilizzare Snowpark Client o familiarizzare con le API Snowpark Client, se hai già familiarità con Spark.

“VideoAmp ha una lunga storia di utilizzo sia di Spark che di Snowflake. Abbiamo migrato direttamente gran parte dei nostri carichi di lavoro su Snowpark, ma Snowpark Connect ci avvicina all'interoperabilità del codice. Avere Snowflake dove risiede già il nostro codice è un chiaro vantaggio, e i primi risultati sono estremamente promettenti. Il meglio è che i nostri engineer non hanno dovuto sacrificare tempo critico per migrare i workload. Con Snowpark Connect abbiamo fatto tutto senza problemi.”
John Adams
Basato su Spark Connect
Il rilascio di Spark Connect, che disaccoppia il client e il server Spark, è stato progettato per facilitare l’utilizzo di Spark da qualsiasi applicazione. Mentre prima di Spark Connect l’applicazione e il driver Spark principale dovevano essere eseguiti insieme, ora possono essere separati. L’applicazione, che si tratti di uno script Python o di un data notebook, invia semplicemente il piano logico irrisolto a un cluster Spark remoto. Questo migliora la connettività Spark con diversi strumenti e l’integrazione nello sviluppo di app moderne.

Snowpark è stato originariamente creato sulla stessa premessa della separazione client-server. Ora, in combinazione con Spark Connect, siamo in grado di portare facilmente la facilità d’uso, i vantaggi in termini di prestazioni e l’affidabilità della piattaforma Snowflake ai workload Spark. Snowpark Connect consente di eseguire il codice Spark in un warehouse Snowflake che svolge tutto il lavoro pesante eliminando la necessità di eseguire il provisioning e la manutenzione dei cluster Spark. Snowpark Connect attualmente supporta le versioni di Spark 3.5.x, consentendo la compatibilità con le funzionalità e i miglioramenti di tali versioni.
Portare il codice Spark dove si trovano i dati Snowflake
Finora, molte organizzazioni che utilizzano Snowflake hanno scelto di utilizzare Spark Connector per elaborare i dati Snowflake con codice Spark, ma questo ha introdotto lo spostamento dei dati, con costi aggiuntivi, latenza e complessità della governance. Anche se il passaggio a Snowpark ha migliorato le prestazioni, scalato la governance e risparmiato denaro, spesso significava riscrivere il codice, rallentando lo sviluppo. Con Snowpark Connect, le organizzazioni hanno una nuova opportunità di rivisitare questi workload ed eseguire l’elaborazione dei dati direttamente in Snowflake senza conversione del codice, eliminando al contempo lo spostamento e la latenza dei dati.
Lavorare con un data lakehouse aperto
Snowpark Connect for Spark funziona con le Apache Iceberg™ Tables, compresi le Iceberg Tables gestite esternamente e i database collegati ai cataloghi. Ora puoi sfruttare la potenza, le prestazioni, la facilità d’uso e la governance della piattaforma Snowflake senza dover spostare i dati o riscrivere il codice Spark.
Come iniziare
Prima di iniziare, segui le istruzioni di configurazione. Lo snippet di codice seguente è un esempio per Jupyter Notebook (uno dei client che supportiamo) e mostra come leggere una tabella Snowflake ed eseguire alcune operazioni sui dataframe.
import pyspark
import os
from snowflake import snowpark_connect
from pyspark.sql import SparkSession
from pyspark.sql.functions import col
from pyspark.sql.functions import to_timestamp, current_timestamp
from pyspark.sql import SparkSession
from pyspark.sql import Row
from pyspark.sql import SparkSession
os.environ["SPARK_CONNECT_MODE_ENABLED"] = "1"
snowpark_connect.start_session() # Start the local |spconnect| session
spark = snowpark_connect.get_session()
spark = snowpark_connect.get_session()
# -------------------------------------------
## Displaying Data from a table in Snowflake which is already available via share
# -------------------------------------------
orders = spark.read.table("SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.ORDERS")
orders.show(2)
customers = spark.read.table("SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER")
customers.show(2)
# --------------------------------------------------
## Top 10 Most frequent buyers and their order count
# ---------------------------------------------------
frequent_buyers = orders.join(customers, orders.o_custkey == customers.c_custkey, "inner") \
.groupBy(customers.c_name) \
.count() \
.orderBy("count", ascending=False)
frequent_buyers.show(10)
# # -------------------------------------------------------------------------------------
# 1. Read from the Managed Iceberg Table that you have created in the account using the tutorial
# -------------------------------------------------------------------------------------
iceberg_table = "iceberg_tutorial_db.PUBLIC.customer_iceberg" # Full table name
df = spark.sql(f"SELECT * FROM {iceberg_table}")
# -------------------------------------------
## Display Data
# -------------------------------------------
df.show(5)
Ora è possibile eseguire codice Spark DataFrame, SQL e UDF su Snowflake tramite Snowflake Notebooks, notebook Jupyter, stored procedure Snowflake, VSCode, Airflow o Snowpark Submit, per un’integrazione perfetta tra diversi storage in Snowflake, Iceberg (in Snowflake o gestito esternamente) e opzioni di cloud storage.
Considerazioni e limitazioni
Attualmente Snowpark Connect funziona solo con le versioni Spark 3.5.x. Questo include il supporto per le API Spark DataFrame e Spark SQL. Ci sono, tuttavia, alcune distinzioni da fare per quanto riguarda la copertura API. Ad esempio, le API RDD, Spark ML, MLlib, Streaming e Delta non sono attualmente incluse nelle funzionalità supportate da Snowpark Connect. Inoltre, per le API supportate, potrebbero esserci alcune differenze semantiche da considerare come specificato nella documentazione di Snowpark Connect. Snowpark Connect è attualmente disponibile solo per ambienti Python e il supporto Java/Scala è in fase di sviluppo.
Nell’evento Data Engineering Connect on demand c’è una sezione dedicata a Snowpark Connect for Spark. Pensi che questa possa essere una buona soluzione per la tua organizzazione? Parla con il tuo account team o contattaci. Registrati per il webinar del 10 settembre in cui esamineremo la funzionalità in modo più dettagliato.
1 Dati basati su casi d’uso di produzione dei clienti ed esercizi di proof-of-concept che confrontano la velocità e il costo di Snowpark rispetto ai servizi Spark gestiti tra novembre 2022 e maggio 2025. Tutti i risultati riassumono i risultati effettivi ottenuti dai clienti con dati reali e non rappresentano data set creati ad hoc per i benchmark.