Apache Spark combineByKey vysvetlené



Tento blog Spark Hadoop vám povie všetko, čo potrebujete vedieť o Apache Spark combineByKey. Nájdite priemerné skóre na študenta pomocou metódy combineByKey.

Prispel Prithviraj Bose

Spark je bleskovo rýchly klastrový výpočtový rámec navrhnutý pre rýchle výpočty a pre dopyt po profesionáloch je dnes na trhu podstatný.Toto je výkonné API v aplikácii Spark, ktoré je combineByKey .





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

Python API: pyspark.RDD.combineByKey .



API má tri funkcie (ako lambda výrazy v Python alebo anonymné funkcie v Rebrík ), a to,

  1. Vytvorte funkciu kombinátora: x
  2. Funkcia zlúčenia hodnoty: r
  3. Funkcia zlúčenia zlučovačov: z

a formát API je combineByKey (x, y, z) .

Pozrime sa na príklad (v Scale). Celý zdroj Scala nájdete tu .



Naším cieľom je nájsť priemerné skóre na študenta.

Toto je trieda zástupných znakov ScoreDetail ukladanie mena študentov a skóre predmetu.

čo je to dynamické pole

Scoredetail-spark-combinebykey

Niektoré údaje o teste sa generujú a prevádzajú na hodnoty párov kľúčov key = Meno študentov a hodnota = ScoreDetail inštancia.

Potom vytvoríme Pair RDD, ako je znázornené na fragmente kódu nižšie. Len na experimentovanie som vytvoril rozdeľovač hashov veľkosti 3, takže tieto tri oddiely budú obsahovať 2, 2 a 4 páry kľúčových hodnôt. To je zvýraznené v časti, kde skúmame jednotlivé oddiely.

Teraz môžeme preskúmať každý oddiel. Prvý riadok vytlačí dĺžku každého oddielu (počet párov kľúč-hodnota na oddiel) a druhý riadok vytlačí obsah každého oddielu.

ako obrátiť reťazec python -

A tu je finále, kde po skombinovaní skóre naprieč rôznymi priečkami vypočítame priemerné skóre na študenta.

Tok vyššie uvedeného kódu je nasledovný ...
Najskôr musíme vytvoriť funkciu kombinátora, ktorá je v podstate n-tice = (hodnota, 1) pre každý kľúč, ktorý sa nachádza v každom oddiele. Po tejto fáze je výstup pre každý (kľúč, hodnota) v oddiele (kľúč, (hodnota, 1)).

Potom sa pri ďalšej iterácii spojovacie funkcie na oddiel zlúčia pomocou funkcie zlúčenia hodnôt pre každý kľúč. Po tejto fáze je výstup každého (kľúč, (hodnota, 1)) (kľúč, (súčet, počet)) v každom oddiele.

Nakoniec funkcia kombinovaného zlúčenia zlúči všetky hodnoty naprieč oddielmi v exekútoroch a odošle údaje späť vodičovi. Po tejto fáze je výstup každého (kľúča, (celkom, počet)) na oddiel
(kľúč, (totalAcrossAllPartitions, countAcrossAllPartitions)).

Mapa prevádza
(kľúč, n-tica) = (kľúč, (totalAcrossAllPartitions, countAcrossAllPartitions))
vypočítať priemer na kľúč ako (kľúč, tuple._1 / tuple._2).

Posledný riadok vytlačí priemerné skóre všetkých študentov na konci vodiča.

Máte na nás otázku? Uveďte ich v sekcii komentárov a my sa vám ozveme.

Súvisiace príspevky:

Demystifikácia rozdelenia disku na Spark