Apache Spark combineByKey vysvětleno



Tento blog Spark Hadoop vám řekne vše, co potřebujete vědět o Apache Spark combineByKey. Najděte průměrné skóre na studenta pomocí metody combineByKey.

Přispěl Prithviraj Bose

Spark je bleskově rychlý clusterový výpočetní rámec navržený pro rychlé výpočty a poptávku po profesionálech je dnes na trhu podstatný.Zde je výkonné API ve Sparku combineByKey .





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

Python API: pyspark.RDD.combineByKey .



API má tři funkce (jako výrazy lambda v Krajta nebo anonymní funkce v Žebřík ), jmenovitě,

  1. Vytvořit funkci slučovače: x
  2. Funkce sloučení hodnoty: y
  3. Funkce slučovacích slučovačů: z

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

Podívejme se na příklad (ve Scale). Celý zdroj Scala najdete tady .



Naším cílem je najít průměrné skóre na studenta.

Tady je zástupná třída ScoreDetail ukládání jména studentů a skóre předmětu.

převést na binární v pythonu

Scoredetail-spark-combinebykey

Některá data testu jsou generována a převedena na hodnoty párů klíčů kde key = Jméno studenta a value = ScoreDetail instance.

Poté vytvoříme Pair RDD, jak je znázorněno v fragmentu kódu níže. Jen pro experimentování jsem vytvořil hash rozdělovač velikosti 3, takže tři oddíly budou obsahovat 2, 2 a 4 páry klíčových hodnot. To je zvýrazněno v části, kde prozkoumáváme každý oddíl.

Nyní můžeme prozkoumat každý oddíl. První řádek vytiskne délku každého oddílu (počet párů klíčových hodnot na oddíl) a druhý řádek vytiskne obsah každého oddílu.

jak převést dvojitý na int

A tady je finální pohyb, kde po kombinaci skóre napříč oddíly vypočítáme průměrné skóre na studenta.

Tok výše uvedeného kódu je následující ...
Nejprve musíme vytvořit funkci slučovače, která je v podstatě n-tice = (hodnota, 1) pro každý klíč nalezený v každém oddílu. Po této fázi je výstup pro každý (klíč, hodnota) v oddílu (klíč, (hodnota, 1)).

Potom se při další iteraci slučovací funkce na oddíl spojí pomocí funkce slučovací hodnoty pro každý klíč. Po této fázi je výstup každého (klíč, (hodnota, 1)) (klíč, (celkem, počet)) v každém oddílu.

Nakonec funkce slučovacího slučovače sloučí všechny hodnoty napříč oddíly v exekutorech a odešle data zpět ovladači. Po této fázi je výstup každého (klíče, (celkem, počtu)) na oddíl
(klíč, (totalAcrossAllPartitions, countAcrossAllPartitions)).

Mapa převádí
(key, tuple) = (key, (totalAcrossAllPartitions, countAcrossAllPartitions))
vypočítat průměr na klíč jako (klíč, tuple._1 / tuple._2).

Poslední řádek vytiskne průměrné skóre všech studentů na konci řidiče.

Máte na nás dotaz? Uveďte je v sekci komentářů a my se vám ozveme.

Související příspěvky:

Demystifikace rozdělení na oddíly ve Sparku