Apache Spark apvienotByKey paskaidrots



Šajā Spark Hadoop emuārā ir viss, kas jums jāzina par Apache Spark combByKey. Izmantojot combByKey metodi, atrodiet vidējo punktu skaitu uz vienu studentu.

Piedalās Prithviraj Bose

Spark ir zibens ātras kopu skaitļošanas sistēma, kas paredzēta ātrai skaitļošanai un pieprasījumam pēc profesionāļiem šodien ir ievērojama tirgū.Šeit ir spēcīgs Spark API, kas ir apvienotByKey .





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

Python API: pyspark.RDD.combineByKey .



API ir trīs funkcijas (kā lambda izteicieni iekšā Python vai anonīmas funkcijas iekšā Kāpnes ), proti,

  1. Izveidot kombinētāja funkciju: x
  2. Sapludināšanas vērtības funkcija: y
  3. Apvienot kombinatoru funkciju: z

un API formāts ir apvienotByKey (x, y, z) .

Apskatīsim piemēru (Scala). Var atrast pilnu Scala avotu šeit .



Mūsu mērķis ir atrast vidējo punktu skaitu uz vienu studentu.

Šeit ir viettura klase ScoreDetail glabājot studentu vārdus kopā ar priekšmeta vērtējumu.

Scoredetail-spark-combinebykey

kas ir funkciju pārslodze c ++

Daži testa dati tiek ģenerēti un pārveidoti par atslēgu pāra vērtībām kur atslēga = Studentu vārds un vērtība = ScoreDetail piemēram.

Tad mēs izveidojam Pair RDD, kā parādīts zemāk esošajā koda fragmentā. Tikai eksperimentēšanai esmu izveidojis hash partitioner izmēru 3, tāpēc trīs nodalījumos būs attiecīgi 2, 2 un 4 atslēgas vērtību pāri. Tas ir izcelts sadaļā, kur mēs izpētām katru nodalījumu.

Tagad mēs varam izpētīt katru nodalījumu. Pirmajā rindā tiek izdrukāts katra nodalījuma garums (atslēgu vērtību pāru skaits vienā nodalījumā), bet otrajā - katra nodalījuma saturs.

Un šeit ir fināla kustība, kurā mēs aprēķinām vidējo punktu skaitu uz vienu studentu pēc punktu apvienošanas starpsienās.

Iepriekš minētā koda plūsma ir šāda ...
Vispirms mums ir jāizveido apvienotāja funkcija, kas būtībā ir katra vērtība = (vērtība, 1) katram atslēgam, kas sastopams katrā nodalījumā. Pēc šīs fāzes katras nodalījuma (atslēga, vērtība) izeja ir (atslēga, (vērtība, 1)).

Pēc tam nākamajā atkārtojumā kombinatora funkcijas vienā nodalījumā tiek apvienotas, izmantojot sapludināšanas vērtības funkciju katram taustiņam. Pēc šīs fāzes katra (atslēga, (vērtība, 1)) izeja ir (atslēga, (kopā, skaits)) katrā nodalījumā.

Visbeidzot, apvienošanas kombinētāja funkcija apvieno visas izpildītāju nodalījumos esošās vērtības un nosūta datus atpakaļ draiverim. Pēc šīs fāzes katra (atslēga, (kopā, skaits)) nodalījums ir
(atslēga, (totalAcrossAllPartitions, countAcrossAllPartitions)).

Karte pārveido
[atslēga, korpuss] = (atslēga, (totalAcrossAllPartitions, countAcrossAllPartitions))
lai aprēķinātu atslēgas vidējo vērtību kā (key, tuple._1 / tuple._2).

Pēdējā rinda uzrāda vidējos rādītājus visiem skolēniem vadītāja beigās.

Vai mums ir jautājums? Pieminiet tos komentāru sadaļā, un mēs ar jums sazināsimies.

Saistītās ziņas:

Demizificējoša sadalīšana Sparkā