Apache Spark è un motore di elaborazione distribuita progettato per elaborare dati strutturati, semistrutturati e non strutturati su larga scala. Per interagire con il motore e definire operazioni di dati distribuite, gli sviluppatori utilizzano l'API Spark.
Al centro dello sviluppo moderno di Spark c'è l'API Spark DataFrame. Un DataFrame organizza ed elabora i dati distribuiti in colonne denominate, in modo simile a una tabella in un database relazionale o in un foglio di lavoro. Fornisce un'interfaccia strutturata e dichiarativa per analizzare set di dati di grandi dimensioni, ottimizzando automaticamente l'esecuzione fisica dietro le quinte.
Per capire come l'API Spark esegue il codice su una rete distribuita, è importante comprendere i componenti di base della sua architettura di runtime:
Quando progettano pipeline di dati distribuite, gli sviluppatori scelgono tra due interfacce di programmazione principali:
Per quasi tutti i casi d'uso di data engineering e data science, l'API DataFrame è la scelta preferita. Gli RDD sono riservati agli scenari in cui è necessario manipolare dati non strutturati non elaborati (come file binari o stream multimediali) utilizzando oggetti Java personalizzati. I DataFrame richiedono meno codice, vengono eseguiti automaticamente più velocemente e utilizzano la gestione della memoria binaria off-heap per bypassare i colli di bottiglia della garbage collection della JVM.
L'API Spark DataFrame semplifica le attività di elaborazione, pulizia e preparazione di grandi volumi di dati, che richiedono un'elevata potenza di calcolo.
L'API Spark DataFrame funge da base programmatica per le librerie di elaborazione avanzate di Spark:
Ottimizzazione dichiarativa
I DataFrame utilizzano un ottimizzatore di query integrato chiamato Catalyst Optimizer. Quando scrivi il codice DataFrame, l'ottimizzatore riscrive automaticamente il piano di esecuzione fisico applicando il pushdown dei filtri, la riduzione delle proiezioni e il riordino dei join per l'esecuzione più rapida possibile senza ottimizzazione manuale.
Flessibilità linguistica
Che il tuo team scriva codice in Python (PySpark), Scala, Java o R, l'API DataFrame garantisce prestazioni identiche. Il piano di esecuzione sottostante viene compilato e ottimizzato all'interno dello stesso livello di esecuzione indipendente dalla JVM.
Gestione efficiente della memoria
I DataFrame utilizzano il motore di esecuzione Tungsten per archiviare i dati in un formato binario off-heap altamente compresso. In questo modo si elimina l'overhead di creazione degli oggetti JVM e si evita che le pause di garbage collection blocchino i thread dell'esecutore.
L'esecuzione di Spark open source richiede tradizionalmente la configurazione manuale del cluster, la gestione della versione del software e un peering di rete complesso. Google Cloud semplifica questo processo offrendo Managed Service for Apache Spark, che trasforma l'esecuzione distribuita in una piattaforma di dati completamente gestita e pronta per l'uso aziendale.
I team di dati eseguono i carichi di lavoro Spark DataFrame su Google Cloud utilizzando le seguenti funzionalità:
Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.