Το Apache Spark CombByKey εξήγησε



Αυτό το blog Spark Hadoop σας λέει όλα όσα πρέπει να γνωρίζετε για το Apache Spark CombByKey. Βρείτε τη μέση βαθμολογία ανά μαθητή χρησιμοποιώντας τη μέθοδο CombByKey.

Συνεισφορά από τον Prithviraj Bose

Το Spark είναι ένα γρήγορο πλαίσιο υπολογιστικών συμπλεγμάτων σχεδιασμένο για γρήγορο υπολογισμό και τη ζήτηση για επαγγελματίες με είναι σημαντική στην αγορά σήμερα.Εδώ είναι ένα ισχυρό API στο Spark που είναι συνδυάστεByKey .





Κλίμακα API: org.apache.spark.PairRDDFunctions.combineByKey .

API Python: pyspark.RDD.combineByKey .



Το API λαμβάνει τρεις λειτουργίες (όπως εκφράσεις λάμδα σε Πύθων ή ανώνυμες συναρτήσεις σε Σκάλα ), και συγκεκριμένα,

  1. Δημιουργία συνάρτησης συνδυασμού: x
  2. Συνάρτηση τιμής συγχώνευσης: y
  3. Λειτουργία συγχώνευσης συνδυασμού: z

και η μορφή API είναι CombByKey (x, y, z) .

Ας δούμε ένα παράδειγμα (στη Σκάλα). Μπορείτε να βρείτε την πλήρη πηγή Scala εδώ .



Στόχος μας είναι να βρούμε τη μέση βαθμολογία ανά μαθητή.

Ακολουθεί μια τάξη placeholder Λεπτομέρεια βαθμολογίας αποθηκεύοντας το όνομα των μαθητών μαζί με τη βαθμολογία ενός θέματος.

Scoredetail-spark-combinebykey

Ορισμένα δεδομένα δοκιμής δημιουργούνται και μετατρέπονται σε τιμές ζεύγους κλειδιών όπου key = Όνομα μαθητή και τιμή = ScoreDetail παράδειγμα.

Στη συνέχεια, δημιουργούμε ένα Pair RDD όπως φαίνεται στο παρακάτω τμήμα κώδικα. Μόνο για πειραματισμό, έχω δημιουργήσει ένα κατακερματιστή κατακερματισμού μεγέθους 3, οπότε τα τρία διαμερίσματα θα περιέχουν ζεύγη τιμών κλειδιών 2, 2 και 4 αντίστοιχα. Αυτό τονίζεται στην ενότητα όπου διερευνούμε κάθε διαμέρισμα.

Τώρα μπορούμε να εξερευνήσουμε κάθε διαμέρισμα. Η πρώτη γραμμή εκτυπώνει το μήκος κάθε διαμερίσματος (αριθμός ζευγών τιμών κλειδιού ανά διαμέρισμα) και η δεύτερη γραμμή εκτυπώνει το περιεχόμενο κάθε διαμερίσματος.

Και εδώ είναι το τελικό κίνημα όπου υπολογίζουμε τη μέση βαθμολογία ανά μαθητή αφού συνδυάσουμε τις βαθμολογίες στα διαμερίσματα.

Η παραπάνω ροή κώδικα έχει ως εξής…
Πρώτα πρέπει να δημιουργήσουμε μια συνάρτηση συνδυασμού που είναι ουσιαστικά ένα tuple = (τιμή, 1) για κάθε κλειδί που συναντάται σε κάθε διαμέρισμα. Μετά από αυτήν τη φάση, η έξοδος για κάθε (κλειδί, τιμή) σε ένα διαμέρισμα είναι (κλειδί, (τιμή, 1)).

Στη συνέχεια, στην επόμενη επανάληψη οι συνδυαστικές συναρτήσεις ανά διαμέρισμα συγχωνεύονται χρησιμοποιώντας τη συνάρτηση τιμής συγχώνευσης για κάθε κλειδί. Μετά από αυτή τη φάση η έξοδος κάθε (κλειδί, (τιμή, 1)) είναι (κλειδί, (σύνολο, μέτρηση)) σε κάθε διαμέρισμα.

Τέλος, η συνάρτηση συγχώνευσης συγχωνεύει όλες τις τιμές στα διαμερίσματα των εκτελεστών και στέλνει τα δεδομένα πίσω στον οδηγό. Μετά από αυτήν τη φάση η έξοδος κάθε (πλήκτρο, (σύνολο, μέτρηση)) ανά διαμέρισμα είναι
(κλειδί, (totalAcrossAllPartitions, countAcrossAllPartitions)).

Ο χάρτης μετατρέπει το
(κλειδί, tuple) = (κλειδί, (totalAcrossAllPartitions, countAcrossAllPartitions))
για τον υπολογισμό του μέσου όρου ανά κλειδί ως (κλειδί, tuple._1 / tuple._2).

Η τελευταία γραμμή εκτυπώνει τη μέση βαθμολογία για όλους τους μαθητές στο τέλος του οδηγού.

Έχετε μια ερώτηση για εμάς; Αναφέρετέ τα στην ενότητα σχολίων και θα επικοινωνήσουμε μαζί σας.

Σχετικές αναρτήσεις:

υλοποιήστε ελάχιστο σωρό σε java

Απομυθοποίηση Διαμερισμάτων στο Spark