Doprinos Prithviraj Bose
Spark’s Otporni distribuirani skupovi podataka (apstrakcija programiranja) lijeno se procjenjuju, a transformacije se pohranjuju u usmjerenim acikličkim grafikonima (DAG). Dakle, svaka akcija na RDD natjerat će Spark da preračuna DAG. Na ovaj se način u Sparku postiže elastičnost, jer ako bilo koji radnički čvor zakaže, DAG samo treba ponovno izračunati.
Također je obavezno za predmemoriranje (nastavi s odgovarajućom razinom pohrane) RDD-a tako da česte akcije na RDD-u ne prisiljavaju Spark-a da preračuna DAG.Teme obrađene na ovom blogu u osnovi su potrebne za certificiranje Apache Spark i Scala. Teme obrađene na ovom blogu su u osnovi potrebne za .
Zašto koristiti particiju?
U klaster računanju središnji je izazov minimizirati mrežni promet. Kad su podaci orijentirani na ključ / vrijednost, particioniranje postaje imperativ jer za naknadne transformacije na RDD-u postoji prilična količina miješanja podataka u mreži. Ako su slični ključevi ili raspon ključeva pohranjeni na istoj particiji, tada je miješanje na minimum, a obrada postaje bitno brza.
Transformacije koje zahtijevaju miješanje podataka kroz radne čvorove uvelike imaju koristi od particioniranja. Takve transformacije su cogroup, groupWith, join, leftOuterJoin, rightOuterJoin, groupByKey, reduceByKey, combByKey i Pogledaj .
Particije se mogu konfigurirati pod uvjetom da se RDD temelji na ključu / vrijednosti.Svojstva particije
- Zavjese u istoj particiji zajamčeno su u istom stroju.
- Svaki čvor u klasteru može sadržavati više od jedne particije.
- Ukupan broj particija može se konfigurirati, prema zadanim postavkama postavljen je na ukupan broj jezgri na svim izvršnim čvorovima.
Vrste particija u Spark-u
Spark podržava dvije vrste particija,
što je sinkronizacija u javi
- Hash particioniranje : Koristi Java Object.hashCode metoda za određivanje particije kao particija = ključ.hashCode ()% numPartitions.
- Podjela raspona : Koristi raspon za distribuciju tipki koje spadaju u raspon na odgovarajuće particije. Ova je metoda prikladna ako postoji prirodan poredak u tipkama, a tipke nisu negativne. Ispod isječak koda prikazuje upotrebu particionera raspona.
Primjer koda
Pogledajmo primjer kako podijeliti podatke između radničkih čvorova. Dostupan je puni Scala kod ovdje .
Evo nekoliko testnih podataka od 12 koordinata (u obliku korijena),
podatkovni okvir u selenu
Izradite org.apache.spark.HashPartitioner veličine 2, gdje će ključevi biti podijeljeni na ove dvije particije na temelju hash koda ključeva.
Tada možemo pregledati parove i napraviti razne transformacije na temelju ključa poput foldByKey i reduceByKey.
Rezimirajući, particioniranje uvelike poboljšava brzinu izvršavanja za ključne transformacije.
Imate pitanje za nas? Molimo spomenite to u odjeljku za komentare i javit ćemo vam se.
Vezane objave:
python def __init __ (samo)
Zašto biste trebali naučiti Spark nakon svladavanja Hadoopa