Apache Spark combByKey magyarázat



Ez a Spark Hadoop blog mindent elárul, amit tudnia kell az Apache Spark combByKey-ről. A combybyKey módszerrel keresse meg az egy tanulóra eső átlagos pontszámot.

Közreműködött: Prithviraj Bose

A Spark egy villámgyors fürt számítási keretrendszer, amelyet a gyors számításhoz és a szakemberek iránti igény iránt terveztek ma jelentős a piacon.Itt van egy erőteljes API a Sparkban, amely combByKey .





API skála: org.apache.spark.PairRDDFunctions.combineByKey .

java megtalálja a tömbben a legmagasabb értéket

Python API: pyspark.RDD.combineByKey .



Az API három funkciót tölt be (mint lambda kifejezések ban ben Piton vagy névtelen funkciók ban ben Létra ), nevezetesen

  1. Kombinátor funkció létrehozása: x
  2. Összevonási érték függvény: y
  3. Egyesítő kombinátorok funkció: z

és az API formátum combByKey (x, y, z) .

Lássunk egy példát (Scalában). A teljes Scala forrás megtalálható itt .



Célunk, hogy megtaláljuk az egy tanulóra jutó átlagos pontszámot.

Itt van egy helyőrző osztály ScoreDetail tárolja a hallgatók nevét a tantárgy pontszámával együtt.

Scoredetail-spark-combinebykey

Néhány tesztadatot generálnak és kulcspár-értékekké alakítanak, ahol kulcs = Diákok neve és érték = ScoreDetail példa.

Ezután létrehozunk egy Pair RDD-t az alábbi kódrészlet szerint. Csak kísérletezés céljából hoztam létre egy 3 méretű hash partíciót, így a három partíció 2, 2 és 4 kulcsérték-párot fog tartalmazni. Ezt emeli ki az a szakasz, ahol az egyes partíciókat feltárjuk.

Most felfedezhetjük az egyes partíciókat. Az első sor kinyomtatja az egyes partíciók hosszát (partíciónként a kulcsértékpárok számát), a második sor pedig az egyes partíciók tartalmát.

mi a legjobb java ide

És itt van a finálé mozgása, ahol kiszámoljuk az egy tanulóra jutó átlagos pontszámot, miután a partíciókon összevontuk az eredményeket.

A fenti kódfolyam a következő ...
Először létre kell hoznunk egy kombináló függvényt, amely lényegében egy tuple = (érték, 1) minden partícióban előforduló kulcshoz. Ezt a fázist követően a partíció minden (kulcs, érték) kimenete a (kulcs, (érték, 1)).

Ezután a következő iteráción az egyesítő partíciónkénti funkciókat egyesítik az egyesítés értékfüggvényével minden kulcshoz. Ezt a fázist követően minden partíció kimenete (kulcs, (érték, 1)) (kulcs, (összes, szám)).

Végül az egyesítés egyesítő funkció egyesíti az összes értéket a végrehajtók partícióiban, és visszaküldi az adatokat az illesztőprogramnak. Ezt a fázist követően partíciónként minden (kulcs, (összes, szám)) kimenete az
(kulcs, (totalAcrossAllPartitions, countAcrossAllPartitions)).

A térkép átalakítja a
(kulcs, páros) = (kulcs, (totalAcrossAllPartitions, countAcrossAllPartitions))
a kulcsonkénti átlag kiszámításához (kulcs, tuple._1 / tuple._2).

Az utolsó sor az összes diák átlagos pontszámát írja ki a vezető végén.

Van egy kérdésünk? Említse meg őket a megjegyzés rovatban, és kapcsolatba lépünk Önnel.

Kapcsolódó hozzászólások:

Demisztifikáló particionálás a Sparkban