Struttura del corso
Modulo 1: Fondamenti di Big Data e Spark
- Panoramica dell'ecosistema Big Data e il ruolo di Spark nelle piattaforme di dati moderne
- Comprensione dell'architettura di Spark: driver, esecutori, cluster manager, valutazione pigra, DAG e pianificazione dell'esecuzione
- Differenze tra le API RDD e DataFrame e quando utilizzare ciascuno dei due approcci
- Crea e configurazione di SparkSession e comprensione dei fondamenti della configurazione dell'applicazione
Modulo 2: PySpark DataFrames
- Lettura e scrittura di dati da fonti e formati aziendali: CSV, JSON, Parquet e Delta
- Lavoro con PySpark DataFrames: trasformazioni, azioni, espressioni di colonna, filtraggio, join e aggregazioni
- Implementazione di operazioni avanzate come le funzioni finestra, la gestione dei timestamp e il lavoro con dati annidati
- Applicazione di controlli di qualità dei dati e scrittura di codice PySpark riutilizzabile e mantenibile
Modulo 3: Fondamenti di Kubernetes e Docker per utenti Spark
- Comprensione di come le immagini Docker e i pod Kubernetes si relazionino ai processi driver e esecutori di Spark — una visione concettuale per i consumatori del cluster, non per gli amministratori
- Comprensione di ciò che accade quando un job Spark viene eseguito su Kubernetes: pianificazione dei pod, richieste e limiti delle risorse, e come le impostazioni della sessione si mappino su di essi
- Comprensione di ciò che si controlla attraverso i parametri della sessione Spark rispetto a ciò che il team di piattaforma controlla attraverso il provisioning del cluster — e perché questo confine sia importante per il tuning
- Esercizio pratico: Ispezionare un job Spark-on-Kubernetes in esecuzione nel cluster sandbox e identificare i pod driver ed esecutori
Modulo 4: Configurazione della sessione Spark su Kubernetes — Approfondimento
- Comprensione del numero di esecutori rispetto alla loro dimensione: compromesso tra memoria e core e come ragionare su di essi
- Allocazione della memoria per driver ed esecutori, overhead di memoria, e come questi si traducano in risorse dei pod
- Allocazione dinamica: come si comporta su Kubernetes, quando risparmia risorse e quando no
- Esercizio pratico: Eseguire lo stesso job con diverse configurazioni di esecutori e core e confrontare tempo di esecuzione e utilizzo delle risorse
Modulo 5: Comportamento di scalabilità e ottimizzazione dei costi
- Comprensione di come l'aggiunta o la rimozione di nodi cambi il comportamento del job, il tempo di completamento e il consumo di risorse
- Confronto tra molti esecutori piccoli e pochi grandi: compromessi tra prestazioni e costi
- Comportamento dello shuffle e tuning delle partizioni di shuffle, inclusa la stima dell'impatto sui costi delle scelte di configurazione
- Esercizio pratico: Ridimensionare il cluster sandbox da cinque a dieci nodi e osservare l'effetto sul tempo di completamento del job e sul consumo di risorse
Modulo 6: Ingestione dati efficiente e partizionamento
- Comprensione del problema dei file di piccole dimensioni: perché le fonti divise in molti file Parquet da 1-5 MB degradino le prestazioni e distorcano il partizionamento
- Strategie di ripartizionamento e coalescenza
- Controllo delle dimensioni delle partizioni in lettura e in scrittura
- Scrittura efficiente di Parquet per evitare la ricreazione del problema dei file di piccole dimensioni a valle
- Esercizio pratico: Caricare un set di dati composto da molte partizioni Parquet piccole, applicare diverse strategie di ripartizionamento e confrontare le prestazioni prima e dopo l'ottimizzazione
Modulo 7: Gestione della memoria in Pandas e diagnosi dei guasti
- Comprensione delle cause profonde degli errori out-of-memory in Pandas e riconoscimento dei sintomi
- Applicazione di schemi di conversione efficienti in termini di memoria tra Spark e Pandas
- Evitare esplosioni di memoria quando si scrivono grandi set di dati in CSV
- Utilizzo dell'elaborazione in blocchi (chunked processing) e dell'ottimizzazione dei dtype per ambienti vincolati
- Esercizio pratico: Riprodurre un tipico scenario out-of-memory di Pandas e risolverlo utilizzando chunking e ottimizzazione dei dtype
Modulo 8: Polars come strumento complementare
- Posizionamento di Polars rispetto a Pandas: caratteristiche di prestazioni, valutazione pigra e comportamento della memoria
- Comprensione di dove Polars si integri con PySpark e Pandas nei moderni stack di dati cloud e nelle roadmap di migrazione, inclusi gli ambienti AWS
- Esercizio pratico: Riscrivere una trasformazione pesante in Pandas in Polars e confrontare l'utilizzo della memoria e la velocità di elaborazione
Modulo 9: Applicazione dell'ottimizzazione a carichi di lavoro ETL e ML
- Applicazione dei principi di configurazione, partizionamento e gestione della memoria a una pipeline ETL realistica
- Comprensione delle considerazioni di ottimizzazione specifiche per i carichi di lavoro di machine learning che girano sullo stesso cluster
- Applicazione di un workflow di tuning pratico per diagnosticare sistematicamente problemi di costi e prestazioni
- Esercizio pratico: Completare un mini-progetto end-to-end che combina caricamento dati, trasformazione e un semplice passaggio di addestramento del modello, con i partecipanti che regolano la configurazione di Spark autonomamente
Requisiti
I partecipanti dovrebbero possedere:
- Esperienza pratica nella programmazione Python, incluse funzioni, moduli e concetti base della programmazione orientata agli oggetti.
- Esperienza base o intermedia nel lavoro con Pandas e flussi di lavoro per l'elaborazione di dati tabellari.
- Familiarità di base con PySpark e Spark DataFrames, inclusa la lettura dei dati, trasformazioni, azioni, join e aggregazioni.
- Una conoscenza generale di SQL e concetti di elaborazione dati, inclusa la filtrazione, il raggruppamento e l'unione di set di dati.
- Familiarità di base con concetti Docker e Kubernetes, come container, immagini e pod. Non è richiesta esperienza nella gestione di Kubernetes.
- Una conoscenza di base dei formati di dati comuni come CSV, JSON e Parquet.
I partecipanti non devono essere amministratori Kubernetes o specialisti infrastrutturali. Il corso si concentra su come data engineer, sviluppatori e data scientist possano comprendere e ottimizzare i propri carichi di lavoro Spark eseguiti su Kubernetes, da una prospettiva applicativa e di configurazione.
Pubblico di riferimento
Questo corso è progettato per professionisti che sviluppano, mantengono o ottimizzano carichi di lavoro per l'elaborazione dati e il machine learning utilizzando Python e Spark in ambienti cloud o containerizzati.
È particolarmente adatto per:
- Data Engineer che lavorano con PySpark, elaborazione dati distribuita e pipeline ETL.
- Data Scientist che elaborano grandi set di dati o eseguono carichi di lavoro di machine learning con Spark, Pandas o Polars.
- Sviluppatori Python che lavorano con applicazioni ad alto utilizzo di dati e desiderano migliorare l'efficienza della memoria e le prestazioni di elaborazione.
- Machine Learning Engineer che gestiscono carichi di lavoro per la preparazione dei dati e l'addestramento dei modelli su ambienti Kubernetes o cloud condivisi.
- Analytics Engineer che lavorano con grandi set di dati e cercano di migliorare l'efficienza dell'elaborazione dei dati.
- Ingegneri DevOps, di Piattaforma e Cloud che supportano carichi di lavoro Spark su Kubernetes e devono comprendere come la configurazione a livello applicativo influenzi l'utilizzo delle risorse e le prestazioni.
- Lead Tecnici e Architetti di Soluzione coinvolti nella progettazione o ottimizzazione di piattaforme moderne per l'elaborazione dati.
Recensioni (1)
Mi è piaciuto che fosse pratico. Ho adorato applicare le conoscenze teoriche con esempi pratici.
Aurelia-Adriana - Allianz Services Romania
Corso - Python and Spark for Big Data (PySpark)
Traduzione automatica