Nel programma Apache Spark come si fa a sapere quale parte del codice verrà eseguita nel programma del driver e quale parte del codice verrà eseguita nei nodi worker?codice driver diverso e codice di lavoro in Apache Spark
Con Cordiali saluti
Nel programma Apache Spark come si fa a sapere quale parte del codice verrà eseguita nel programma del driver e quale parte del codice verrà eseguita nei nodi worker?codice driver diverso e codice di lavoro in Apache Spark
Con Cordiali saluti
In realtà è piuttosto semplice. Tutto ciò che accade all'interno della chiusura creata da una trasformazione avviene su un lavoratore. Significa che se qualcosa viene passato all'interno di map(...)
, filter(...)
, mapPartitions(...)
, groupBy*(...)
, aggregateBy*(...)
viene eseguito sui lavoratori. Include la lettura di dati da una memoria persistente o da fonti remote.
Azioni come count
, , fold(...)
di solito vengono eseguite su driver e lavoratori. Il sollevamento pesante viene eseguito in parallelo dai lavoratori e alcuni passaggi finali, come la riduzione delle uscite ricevute dai lavoratori, vengono eseguiti in sequenza sul driver.
Tutto il resto, come l'attivazione di un'azione o la trasformazione, avviene sul conducente. In particolare, significa ogni azione che richiede l'accesso a SparkContext
. In PySpark significa anche una comunicazione con il gateway Py4j.
Tutte le chiusure passate come argomento al metodo di JavaRDD/JavaPairRDD/simile e alcuni metodi di queste classi verranno eseguiti dai nodi spark. Tutto il resto è il codice del conducente.
Grazie! –