Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Azure Databricks si basa su Apache Spark, un motore di analisi unificato per Big Data e Machine Learning. PySpark consente di interfacciarsi con Apache Spark usando il linguaggio di programmazione Python, che è un linguaggio flessibile facile da apprendere, implementare e gestire. Offre anche molte opzioni per la visualizzazione dei dati in Databricks. PySpark combina la potenza di Python e Apache Spark.
Questo articolo offre una panoramica dei concetti fondamentali di PySpark in Databricks.
Introduzione ai concetti di Spark
È importante comprendere i concetti chiave di Apache Spark prima di approfondire l'uso di PySpark.
DataFrame
I dataframe sono gli oggetti primari in Apache Spark. Un dataframe è un set di dati organizzato in colonne denominate. È possibile considerare un dataframe come un foglio di calcolo o una tabella SQL, una struttura di dati bidimensionale etichettata di una serie di record (simile alle righe di una tabella) e colonne di tipi diversi. I dataframe offrono un set completo di funzioni( ad esempio, selezionare colonne, filtrare, unire e aggregare) che consentono di eseguire in modo efficiente attività comuni di manipolazione e analisi dei dati.
Alcuni elementi importanti del dataframe includono:
- Schema: uno schema definisce i nomi di colonna e i tipi di un dataframe. I formati di dati hanno una semantica diversa per la definizione e l'imposizione dello schema. Alcune origini dati forniscono informazioni sullo schema, mentre altre si basano sulla definizione manuale dello schema o consentono l'inferenza dello schema. Gli utenti possono definire gli schemi manualmente o gli schemi possono essere letti da un'origine dati.
-
Righe: Spark rappresenta i record in un DataFrame sotto forma di
Row
oggetti. Mentre i formati di dati sottostanti, come Delta Lake, usano colonne per archiviare i dati, Spark, per ottimizzare, memorizza nella cache e riorganizza i dati usando righe. -
Colonne: le colonne in Spark sono simili alle colonne di un foglio di calcolo e possono rappresentare un tipo semplice, ad esempio una stringa o un numero intero, ma anche tipi complessi come matrice, mapping o null. È possibile scrivere query che selezionano, modificano o rimuovono colonne da un'origine dati. Le origini dati possibili includono tabelle, viste, file o altri dataframe. Le colonne non vengono mai rimosse da un set di dati o da un dataframe, ma vengono semplicemente omesse dai risultati tramite
.drop
trasformazioni o omissioni nelleselect
istruzioni.
Elaborazione dati
Apache Spark usa la valutazione differita per elaborare trasformazioni e azioni definite con DataFrames. Questi concetti sono fondamentali per comprendere l'elaborazione dei dati con Spark.
Trasformazioni: in Spark si esprime la logica di elaborazione come trasformazioni, che sono istruzioni per il caricamento e la modifica dei dati tramite dataframe. Le trasformazioni comuni includono la lettura di dati, join, aggregazioni e conversione dei tipi.
Valutazione pigra: Spark ottimizza l'elaborazione dei dati identificando il piano fisico più efficiente per valutare la logica specificata dalle trasformazioni. Tuttavia, Spark non agisce sulle trasformazioni finché non vengono chiamate azioni. Anziché valutare ogni trasformazione nell'ordine esatto specificato, Spark attende fino a quando un'azione attiva il calcolo su tutte le trasformazioni. Questa operazione è nota come valutazione differita o caricamento differito, che consente di concatenare più operazioni perché Spark gestisce l'esecuzione in modo posticipato, anziché eseguirle immediatamente quando vengono definite.
Nota
La valutazione differita significa che i DataFrame, o strutture dati, archiviano le query logiche come un insieme di istruzioni rivolte a un'origine dati, invece di produrre un risultato in memoria. Ciò varia drasticamente dall'esecuzione immediata, ovvero il modello usato dai DataFrames pandas.
Azioni: le azioni indicano a Spark di calcolare un risultato da una serie di trasformazioni in uno o più dataframe. Le operazioni di azione restituiscono un valore e possono essere le seguenti:
- Azioni per l'output dei dati nella console o nell'editor, ad esempio
display
oshow
- Azioni per raccogliere dati (restituisce
Row
oggetti), ad esempiotake(n)
, efirst
ohead
- Azioni da scrivere in origini dati, ad esempio
saveAsTable
- Aggregazioni che attivano un calcolo, ad esempio
count
Importante
Nelle pipeline di dati di produzione, la scrittura dei dati è in genere l'unica azione che deve essere presente. Tutte le altre azioni interrompono l'ottimizzazione delle query e possono causare colli di bottiglia.
Cosa significa che i dataframe non sono modificabili?
I DataFrames sono una raccolta di trasformazioni e azioni definite su una o più origini dati, ma in definitiva Apache Spark risolve le query tornando alle origini dati originali, quindi i dati stessi non vengono alterati e nessun DataFrame viene modificato. In altre parole, i dataframe non sono modificabili. Per questo motivo, dopo l'esecuzione delle trasformazioni, viene restituito un nuovo dataframe che deve essere salvato in una variabile per accedervi nelle operazioni successive. Se vuoi valutare un passaggio intermedio della trasformazione, eseguire un'azione.
API e librerie
Come per tutte le API per Spark, PySpark è dotato di molte API e librerie che abilitano e supportano funzionalità avanzate, tra cui:
- Elaborazione di dati strutturati con query relazionali con Spark SQL e dataframe. Spark SQL consente di combinare query SQL con programmi Spark. Con i dataframe Spark è possibile leggere, scrivere, trasformare e analizzare in modo efficiente i dati usando Python e SQL, il che significa che si sfrutta sempre la potenza completa di Spark. Consulta Introduzione a PySpark.
- Elaborazione scalabile di flussi con Structured Streaming. È possibile esprimere il calcolo del flusso allo stesso modo in cui si esprime un calcolo batch su dati statici e il motore SQL Spark lo esegue in modo incrementale e continuo man mano che i dati di streaming continuano ad arrivare. Vedi Panoramica di Structured Streaming.
- Strutture di dati Pandas e strumenti di analisi dei dati che funzionano su Apache Spark con l'API Pandas in Spark. L'API Pandas in Spark consente di ridimensionare il carico di lavoro pandas a qualsiasi dimensione eseguendolo distribuito tra più nodi, con una singola codebase che funziona con pandas (test, set di dati più piccoli) e con Spark (produzione, set di dati distribuiti). Vedere Panoramica dell'API Pandas in Spark.
- Algoritmi di Machine Learning con Machine Learning (MLLib). MLlib è una libreria di Machine Learning scalabile basata su Spark che fornisce un set uniforme di API che consentono agli utenti di creare e ottimizzare pipeline pratiche di Machine Learning. Vedere Panoramica della libreria di Machine Learning.
- Grafici e calcoli paralleli a grafo con GraphX. GraphX introduce un nuovo multigrafo diretto con proprietà associate a ogni vertice e bordo ed espone operatori di calcolo del grafo, algoritmi e generatori per semplificare le attività di analisi dei gragrafi. Consultare l'introduzione a GraphX.
Esercitazioni su Spark
Per esempi di utilizzo di PySpark in Databricks, vedere gli articoli seguenti:
La documentazione di Apache Spark include anche guide introduttive e guide per l'apprendimento di Spark, tra cui:
- Guida introduttiva ai DataFrames PySpark
- Introduzione a Spark SQL
- Structured Streaming Programming Guide
- Guida rapida alle API Pandas su Spark
- Guida alla programmazione della libreria di Machine Learning
Informazioni di riferimento su PySpark
Azure Databricks gestisce la propria versione delle API PySpark e i riferimenti corrispondenti, disponibili nelle sezioni seguenti: