Apache Spark combineByKey Explained



Den här Spark Hadoop-bloggen berättar allt du behöver veta om Apache Spark combineByKey. Hitta medelvärdet per elev med hjälp av combineByKey-metoden.

Bidrag från Prithviraj Bose

Spark är ett blixtsnabbt cluster computing-ramverk utformat för snabb beräkning och efterfrågan på proffs med är betydande på marknaden idag.Här är ett kraftfullt API i Spark vilket är combineByKey .





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

Python API: pyspark.RDD.combineByKey .



API: n tar tre funktioner (som lambda-uttryck i Pytonorm eller anonyma funktioner i Stege ), nämligen

  1. Skapa kombinationsfunktion: x
  2. Sammanfogningsfunktion: y
  3. Sammanfogningsfunktion: z

och API-formatet är combineByKey (x, y, z) .

java hitta högsta värdet i matrisen

Låt oss se ett exempel (i Scala). Hela Scala-källan finns här .



Vårt mål är att hitta genomsnittet per student.

Här är en platshållarklass ScoreDetail lagra elevernas namn tillsammans med poängen för ett ämne.

Scoredetail-spark-combinebykey

Vissa testdata genereras och konverteras till nyckelparvärden där key = Elevernas namn och värde = ScoreDetail exempel.

Sedan skapar vi ett par RDD som visas i kodfragmentet nedan. Bara för experiment har jag skapat en hash-partitioner av storlek 3, så de tre partitionerna kommer att innehålla 2, 2 respektive 4 nyckelvärdepar. Detta markeras i avsnittet där vi utforskar varje partition.

Nu kan vi utforska varje partition. Den första raden skriver ut längden på varje partition (antal nyckelvärdepar per partition) och den andra raden skriver ut innehållet i varje partition.

hur man stoppar programmet i java

Och här är finalrörelsen där vi beräknar medelvärdet per student efter att ha kombinerat poängen över partitionerna.

Ovanstående kodflöde är som följer ...
Först måste vi skapa en kombinationsfunktion som i huvudsak är en tuple = (värde, 1) för varje nyckel som påträffas i varje partition. Efter denna fas är utgången för varje (nyckel, värde) i en partition (nyckel, (värde, 1)).

Vid nästa iteration slås kombinationsfunktionerna per partition samman med funktionen för sammanslagningsvärde för varje tangent. Efter denna fas är utgången för varje (tangent, (värde, 1)) (tangent, (totalt, antal)) i varje partition.

Slutligen slår sammanslagningsfunktionen samman alla värden över partitionerna i exekutörerna och skickar data tillbaka till drivrutinen. Efter denna fas är utmatningen av varje (tangent, (totalt, antal)) per partition
(nyckel, (totalAcrossAllPartitions, countAcrossAllPartitions)).

Kartan omvandlar
(key, tuple) = (key, (totalAcrossAllPartitions, countAcrossAllPartitions))
för att beräkna genomsnittet per tangent som (tangent, tuple._1 / tuple._2).

Den sista raden skriver ut medelpoängen för alla elever i slutet av föraren.

Har du en fråga till oss? Nämn dem i kommentarsektionen så återkommer vi till dig.

Relaterade inlägg:

sortera () i c ++

Avmystifierar partitionering i Spark