Apache Spark combineByKey expliqué



Ce blog Spark Hadoop vous dit tout ce que vous devez savoir sur Apache Spark combineByKey. Trouvez le score moyen par élève en utilisant la méthode combineByKey.

Contribution de Prithviraj Bose

Spark est un cadre de calcul de cluster ultra-rapide conçu pour le calcul rapide et la demande de professionnels avec est substantielle sur le marché aujourd'hui.Voici une API puissante dans Spark qui est combineByKey .





Échelle de l'API: org.apache.spark.PairRDDFunctions.combineByKey .

javascript vérifie la longueur du tableau

API Python: pyspark.RDD.combineByKey .



L'API prend trois fonctions (comme expressions lambda dans Python ou fonctions anonymes dans Échelle ), à savoir,

  1. Créer une fonction de combinaison: x
  2. Fonction de fusion de valeur: y
  3. Fonction de fusion des combineurs: z

et le format API est combineByKey (x, y, z) .

Voyons un exemple (en Scala) .La source complète de Scala peut être trouvée Ici .



Notre objectif est de trouver la note moyenne par élève.

Voici une classe d'espace réservé ScoreDétail stocker le nom des élèves avec le score d'un sujet.

Scoredetail-spark-combinebykey

Certaines données de test sont générées et converties en valeurs de paires de clés où key = nom des étudiants et value = ScoreDetail exemple.

Ensuite, nous créons un RDD Pair comme indiqué dans le fragment de code ci-dessous. Juste pour l'expérimentation, j'ai créé un partitionneur de hachage de taille 3, donc les trois partitions contiendront respectivement 2, 2 et 4 paires de valeurs clés. Ceci est mis en évidence dans la section où nous explorons chaque partition.

Nous pouvons maintenant explorer chaque partition. La première ligne imprime la longueur de chaque partition (nombre de paires clé / valeur par partition) et la deuxième ligne imprime le contenu de chaque partition.

comment vérifier le palindrome en java

Et voici le mouvement final où nous calculons le score moyen par élève après avoir combiné les scores sur les partitions.

Le flux de code ci-dessus est le suivant…
Nous devons d'abord créer une fonction de combinaison qui est essentiellement un tuple = (valeur, 1) pour chaque clé rencontrée dans chaque partition. Après cette phase, la sortie pour chaque (clé, valeur) dans une partition est (clé, (valeur, 1)).

Ensuite, à l'itération suivante, les fonctions de combinaison par partition sont fusionnées à l'aide de la fonction de valeur de fusion pour chaque clé. Après cette phase, la sortie de chaque (clé, (valeur, 1)) est (clé, (total, nombre)) dans chaque partition.

Enfin, la fonction de combinaison de fusion fusionne toutes les valeurs des partitions dans les exécuteurs et renvoie les données au pilote. Après cette phase, la sortie de chaque (clé, (total, nombre)) par partition est
(clé, (totalAcrossAllPartitions, countAcrossAllPartitions)).

La carte convertit le
(clé, tuple) = (clé, (totalAcrossAllPartitions, countAcrossAllPartitions))
pour calculer la moyenne par clé comme (clé, tuple._1 / tuple._2).

La dernière ligne imprime les scores moyens de tous les élèves du côté conducteur.

Vous avez une question pour nous? Mentionnez-les dans la section commentaires et nous vous répondrons.

Articles Similaires:

Démystifier le partitionnement dans Spark