Apache Spark -yhdistelmäByKey selittää

Tämä Spark Hadoop -blogi kertoo kaiken, mitä sinun tarvitsee tietää Apache Spark combByKeystä. Löydä keskimääräinen pisteet opiskelijaa kohden combybyKey-menetelmällä.

Lähettäjä Prithviraj Bose

ero ylikuormituksen ja ohituksen välillä c ++: ssa

Spark on salamannopea klusterilaskentakehys, joka on suunniteltu nopeaan laskentaan ja ammattilaisten kysyntään on merkittävä markkinoilla tänään.Tässä on tehokas Sparkin sovellusliittymä, joka on combByKey .



API-asteikko: org.apache.spark.PairRDDFunctions.combineByKey .

Python-sovellusliittymä: pyspark.RDD.combineByKey .



API: lla on kolme toimintoa (kuten lambda-ilmaisut sisään Python tai nimettömät toiminnot sisään Tikapuut ), nimittäin,

  1. Luo yhdistintoiminto: x
  2. Yhdistä arvon toiminto: y
  3. Yhdistä yhdistimistoiminto: z

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

Katsotaanpa esimerkki (Scalassa). Koko Scala-lähde löytyy tässä .



Tavoitteenamme on löytää keskimääräinen pisteet opiskelijaa kohti.

Tässä on paikkamerkkiluokka ScoreDetail opiskelijoiden nimien ja kohteen pisteiden tallentaminen.

Scoredetail-spark-combinebykey

Jotkut testitiedot luodaan ja muunnetaan avainpari-arvoiksi missä avain = Opiskelijoiden nimi ja arvo = ScoreDetail ilmentymä.

Sitten luomme parin RDD: n, kuten alla olevassa koodiosassa näkyy. Vain kokeilua varten olen luonut hash-osion, jonka koko on 3, joten kolme osiota sisältää 2, 2 ja 4 avainarvoparia vastaavasti. Tämä on korostettu osiossa, jossa tutkimme kutakin osiota.

Nyt voimme tutkia kutakin osiota. Ensimmäinen rivi tulostaa kunkin osion pituuden (avainarvoparien lukumäärä osiota kohti) ja toinen rivi tulostaa kunkin osion sisällön.

linkitetyn luettelon toteuttaminen kohdassa c

Ja tässä on finaaliliike, jossa laskemme keskimääräisen pisteet opiskelijaa kohti yhdistämällä pisteet osioissa.

Yllä oleva koodivirta on seuraava…
Ensin on luotava yhdistintoiminto, joka on olennaisesti tuple = (arvo, 1) jokaiselle osiolle kohdatulle avaimelle. Tämän vaiheen jälkeen jokaisen osion (avain, arvo) lähtö on (avain, (arvo, 1)).

Sitten seuraavalla iteraatiolla yhdistämistoiminnot osiota kohden yhdistetään jokaisen avaimen yhdistämisarvofunktiolla. Tämän vaiheen jälkeen jokaisen (avain, (arvo, 1)) lähtö on (avain, (yhteensä, määrä)) jokaisessa osiossa.

Lopuksi yhdistämisen yhdistämistoiminto yhdistää kaikki arvot suoritinten osioiden välillä ja lähettää tiedot takaisin ohjaimelle. Tämän vaiheen jälkeen jokaisen (avain, (yhteensä, määrä)) osiota kohti on
(avain, (totalAcrossAllPartitions, countAcrossAllPartitions)).

Kartta muuntaa
(avain, tuple) = (avain, (totalAcrossAllPartitions, countAcrossAllPartitions))
laskeaksesi avaimen keskiarvon muodossa (avain, tuple._1 / tuple._2).

Viimeinen rivi tulostaa kaikkien opiskelijoiden keskimääräiset pisteet kuljettajan lopussa.

Onko sinulla kysymys meille? Mainitse ne kommenttiosassa ja palaamme sinuun.

Aiheeseen liittyvät julkaisut:

Demystifioiva osiointi Sparkissa