Apache Spark-i kombineerimineByKey selgitatud



See Spark Hadoopi ajaveeb ütleb teile kõik, mida peate teadma Apache Spark combineByKey kohta. Leidke kombineeritud ByKey meetodi abil keskmine tulemus õpilase kohta.

Kaastööd tegi Prithviraj Bose

Spark on välkkiire klastrite arvutusraamistik, mis on mõeldud kiireks arvutuseks ja nõudluseks spetsialistide järele on tänapäeval turul märkimisväärne.Siin on Sparkis võimas API, mis on combByKey .





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

Pythoni API: pyspark.RDD.combineByKey .



API-l on kolm funktsiooni (nagu lambda väljendid aastal Python või anonüümsed funktsioonid aastal Redel ), nimelt

  1. Kombineerimisfunktsiooni loomine: x
  2. Väärtuse ühendamise funktsioon: y
  3. Kombainide ühendamise funktsioon: z

ja API-vorming on combByKey (x, y, z) .

Vaatame näidet (Scalas). Täieliku Scala allika leiate siin .



Meie eesmärk on leida keskmine tulemus õpilase kohta.

Siin on kohahoidjate klass ScoreDetail õpilaste nime ja aine hinde salvestamine.

Scoredetail-spark-combinebykey

Osa testiandmeid genereeritakse ja teisendatakse võtmepaari väärtusteks kus võti = Õpilaste nimi ja väärtus = ScoreDetail näiteks.

Seejärel loome paari RDD, nagu on näidatud allpool koodifragmendis. Lihtsalt katsetamiseks olen loonud hash partitsiooni suurusega 3, nii et kolm sektsiooni sisaldavad vastavalt 2, 2 ja 4 võtmeväärtusepaari. Seda rõhutatakse jaotises, kus uurime iga sektsiooni.

täisarvupüütoni pöördarvud

Nüüd saame uurida iga sektsiooni. Esimene rida prindib iga sektsiooni pikkuse (võtmeväärtuste paaride arv sektsiooni kohta) ja teine ​​rida - iga sektsiooni sisu.

Ja siin on finaali liikumine, kus arvutame keskmise hinde õpilase kohta pärast punktide ühendamist partitsioonides.

Ülaltoodud koodivoog on järgmine ...
Kõigepealt peame looma kombineerimisfunktsiooni, mis on sisuliselt tuple = (väärtus, 1) iga partitsiooni iga võtme jaoks. Pärast seda faasi on partitsiooni iga (võti, väärtus) väljundiks (võti, (väärtus, 1)).

Seejärel liidetakse järgmisel kordusel kombineerimisfunktsioonid partitsiooni kohta, kasutades iga klahvi liitmisväärtuse funktsiooni. Pärast seda etappi on iga (võti, (väärtus, 1)) väljund (võti, (kokku, arv)) igas sektsioonis.

Lõpuks ühendab kombineerimisfunktsioon kõik väärtused täiturite partitsioonides ja saadab andmed draiverile tagasi. Pärast seda faasi on iga partitsiooni (võti, (kokku, arv)) väljund
(võti, (totalAcrossAllPartitions, countAcrossAllPartitions)).

Kaart teisendab
[võti, dupleks] = (võti, (totalAcrossAllPartitions, countAcrossAllPartitions))
klahvi keskmise arvutamiseks järgmiselt: (võti, dupleks._1 / duplett._2).

Viimane rida trükib kõigi õpilaste keskmised hinded juhi lõpus.

Kas teil on meile küsimus? Mainige neid kommentaaride jaotises ja me võtame teiega ühendust.

Seonduvad postitused:

Demarkifitseeriv jaotamine Sparkis