Spiegazione di Apache Spark CombinaByKey



Questo blog Spark Hadoop ti dice tutto ciò che devi sapere su Apache Spark combinationByKey. Trova il punteggio medio per studente utilizzando il metodo combinationByKey.

Contributo di Prithviraj Bose

Spark è un framework di cluster computing velocissimo progettato per un calcolo rapido e la domanda di professionisti con è sostanziale nel mercato oggi.Ecco una potente API in Spark che è combinareByKey .





Scala API: org.apache.spark.PairRDDFunctions.combineByKey .

API Python: pyspark.RDD.combineByKey .



L'API assume tre funzioni (come espressioni lambda nel Pitone o funzioni anonime nel Scala ), vale a dire,

  1. Crea funzione combinatore: x
  2. Funzione valore unione: y
  3. Funzione di unione combinatori: z

e il formato API è combinareByKey (x, y, z) .

Vediamo un esempio (in Scala). Il sorgente Scala completo può essere trovato Qui .



Il nostro obiettivo è trovare il punteggio medio per studente.

array monodimensionale in java

Ecco una classe segnaposto ScoreDetail memorizzare il nome degli studenti insieme al punteggio di una materia.

Scoredetail-spark-combinebykey

Alcuni dati di test vengono generati e convertiti in valori di coppie di chiavi dove chiave = nome dello studente e valore = ScoreDetail esempio.

Quindi creiamo un Pair RDD come mostrato nel frammento di codice sottostante. Solo per la sperimentazione, ho creato un partizionatore hash di dimensione 3, quindi le tre partizioni conterranno rispettivamente 2, 2 e 4 coppie di valori chiave. Questo è evidenziato nella sezione in cui esploriamo ogni partizione.

Ora possiamo esplorare ogni partizione. La prima riga stampa la lunghezza di ciascuna partizione (numero di coppie di valori chiave per partizione) e la seconda riga stampa il contenuto di ciascuna partizione.

spiegare la differenza tra oggetti mutabili e immutabili.

Ed ecco il movimento finale in cui calcoliamo il punteggio medio per studente dopo aver combinato i punteggi tra le partizioni.

Il flusso di codice sopra è il seguente ...
Per prima cosa dobbiamo creare una funzione combinatore che sia essenzialmente una tupla = (valore, 1) per ogni chiave incontrata in ogni partizione. Dopo questa fase l'output per ogni (chiave, valore) in una partizione è (chiave, (valore, 1)).

Quindi alla successiva iterazione le funzioni combinatrici per partizione vengono unite usando la funzione del valore di unione per ogni chiave. Dopo questa fase l'output di ogni (chiave, (valore, 1)) è (chiave, (totale, conteggio)) in ogni partizione.

Infine la funzione combinatore di unione unisce tutti i valori tra le partizioni negli esecutori e invia i dati al driver. Dopo questa fase l'output di ogni (key, (total, count)) per partizione è
(key, (totalAcrossAllPartitions, countAcrossAllPartitions)).

La mappa converte il file
(key, tuple) = (key, (totalAcrossAllPartitions, countAcrossAllPartitions))
per calcolare la media per chiave come (key, tuple._1 / tuple._2).

L'ultima riga stampa i punteggi medi di tutti gli studenti alla fine del conducente.

Hai domande per noi? Menzionali nella sezione commenti e ti risponderemo.

Post correlati:

Demistificazione del partizionamento in Spark