Migliore risposta
Ti suggerisco di leggere le versioni precedenti del codice di Spark.
Considera la versione 0.5 rilasciato nel 2012 apache / spark A quel tempo Spark aveva solo circa 70 file di codice sorgente e tutti questi file erano di piccole dimensioni. Dai unocchiata al codice sorgente di RDD qui: apache / spark Tutto è così semplice e conciso.
Inoltre, nota che larchitettura di Spark non ha ” t è cambiato radicalmente da allora. Gli sviluppatori hanno appena aggiunto un sacco di gestione degli errori, ottimizzazioni e integrazione con tecnologie esterne come Yarn o Kafka.
Quando capirai come funzionava Spark nel 2012, non sarebbe un problema capire come funziona Spark oggi.
Inoltre ti suggerisco di leggere queste note: JerryLead / SparkInternals . Forniscono una panoramica dellarchitettura interna di Spark.
Risposta
Per tornare sulla risposta di Noam Ben-Ami – SE, sei un utente end-to-end Spark può essere abbastanza esaustivo e difficile da imparare.
Anche se conosci Bash, Python e SQL questa è solo la punta delliceberg dellutilizzo di Spark. Se scegli Spark “end-to-end” rispetto a un analista di scripting Python / SQL, ha molti componenti che sono di per sé grandi argomenti da imparare.
Certo, puoi usare Spark localmente (il tuo laptop) e senza Hadoop, ma nel “mondo reale” non utilizzerai Spark in questo modo. È bello imparare un po di sintassi, ma non commettere errori, nessuno ti assumerà per fare “Spark” in quel contesto (* gioco di parole).
Lintera ragione per usare Spark è la performance e sei seduto su un file system distribuito noto anche come “Big Data”. Ciò significa che quando scrivi codice per i tuoi lavori Spark capisci cose come partizioni, nodi, serializzazione, JVM, vcore, esecutori, memoria, memoria e disco, shuffle, file compressi, formati colonnari (parquet) e simili lungo tutto il modo di spostare i dati da S3 a RDD, DataFrames, DataSet (solo Java / Scala) e Spark SQL al tuo set di dati finale.
Per me questo è molto simile a quando qualcuno direbbe di sapere ” Excel “e poi chiederesti loro se possono scrivere una macro di base da zero e ottenere quel cervo sotto i fari.
Una possibile avventura in Spark includerebbe:
- Creazione del tuo cluster Hadoop (nodi, memoria, istanze EC2, ecc.)
- Configurazione YARN (nodi, core, istanze, esecutori, gestione della memoria, driver, memoria overhead, trasmissione, in memoria e su gestione del disco, ecc.) – Ognuno di questi può bloccare / uccidere i tuoi lavori e non ottieni un singolo passo avanti con carichi di dati anche banali se uno di questi non funziona, con i tuoi dati.
- Documentazione di Spark RDD
- Documentazione di Spark DataFrames
- Documentazione di Spark SQL
- Inevitabilmente scriverai codice in # 3–5 che esporrà i problemi del # 2.
- A questo punto probabilmente eseguirai il debug come minimo, codice Java e, se utilizzi Python, errori del gateway py4J per problemi di tipo di dati con Python e oggetti di dati in streaming.
Molte persone possono scrivere funzioni / metodi su RDD, DataFrame e Spark SQL in pochi minuti e se hanno esperienza con Python e SQL, forse persino inghiottire RDD, DataFrame e documentazione SQL in pochi giorni, ma quando il tuo lavoro Spark viene interrotto per una trasmissione, un esecutore, unattività o un errore di memoria, niente di tutto ciò avrà importanza. Stai indossando la muta Spark e stai per fare un tuffo nel ventre di Spark [Java].