Demystifioiva osiointi Sparkissa



Tämä blogi kertoo kaiken, mitä sinun tarvitsee tietää osioinnista Sparkissa, osiotyypeistä ja siitä, miten se parantaa avainpohjaisten muunnosten suorittamisen nopeutta.

Lähettäjä Prithviraj Bose

Spark Joustavat hajautetut tietojoukot (ohjelmoinnin abstraktio) arvioidaan laiskasti ja muunnokset tallennetaan suuntautuneina asyklisina kaavioina (DAG). Joten jokainen RDD: n toiminta saa Sparkin laskemaan DAG: n uudelleen. Näin joustavuus saavutetaan Sparkissa, koska jos jokin työntekijäsolmu epäonnistuu, DAG on vain laskettava uudelleen.





Se on myös pakollinen välimuistiin (jatkuu asianmukaisella tallennustilatasolla) RDD siten, että RDD: lle toistuvat toimet eivät pakota Sparkia laskemaan DAG: ta uudelleen.Tämän blogin aiheita vaaditaan lähinnä Apache Spark- ja Scala-sertifikaateille. Tämän blogin aiheita tarvitaan lähinnä .

Miksi käyttää osiota?

Klusterilaskennassa keskeinen haaste on minimoida verkkoliikenne. Kun data on avainarvopainotteista, osioinnista tulee välttämätöntä, koska myöhemmissä RDD-muunnoksissa dataa sekoitetaan kohtuullisen paljon verkon kautta. Jos samankaltaisia ​​avaimia tai avainalueita on tallennettu samaan osioon, satunnaistoisto minimoidaan ja käsittely nopeutuu huomattavasti.



Transformaatiot, jotka edellyttävät tietojen sekoittamista työntekijäsolmuissa, hyötyvät suuresti osioinnista. Tällaisia ​​muutoksia on cogroup, groupWith, join, leftOuterJoin, rightOuterJoin, groupByKey, reducByKey, combByKey ja Katso ylös .

Osiot ovat konfiguroitavissa edellyttäen, että RDD on avainarvopohjainen.

Osioinnin ominaisuudet

  1. Samassa osiossa olevat taulut ovat taatusti samassa koneessa.
  2. Jokainen klusterin solmu voi sisältää useamman kuin yhden osion.
  3. Osioiden kokonaismäärä on määritettävissä, oletuksena se on asetettu ytimien kokonaismäärälle kaikissa suorittimen solmuissa.

Sparkin osioinnin tyypit

Spark tukee kahta tyyppiä osiointia,

kuinka käyttää iteraattoria
  • Hash-osiointi : Käyttää Java-tiedostoja Object.hashCode menetelmä osion määrittämiseksi osio = key.hashCode ()% numPartitions.

hash-partitioning-demystifying-partitioning-in-spark



  • Alueen osiointi : Käyttää aluetta jakamaan alueelle kuuluvat avaimet vastaaville osioille. Tämä menetelmä soveltuu tilanteisiin, joissa näppäimissä on luonnollinen järjestys ja näppäimet eivät ole negatiivisia. Alla oleva koodinpätkä näyttää alueen osittajan käytön.

Koodiesimerkki

Katsotaanpa esimerkki siitä, miten tiedot ositetaan työntekijäsolmuille. Koko Scala-koodi on käytettävissä tässä .

Tässä on testituloksia 12 koordinaatista (joukkoina),

Luo org.apache.spark.HashPartitioner kooltaan 2, jossa avaimet jaetaan näiden kahden osion yli avainten hajautuskoodin perusteella.

Sitten voimme tarkastaa parit ja tehdä erilaisia ​​avainpohjaisia ​​muunnoksia, kuten foldByKey ja reducByKey.

Yhteenvetona voidaan todeta, että osiointi parantaa huomattavasti avainpohjaisten muunnosten suoritusnopeutta.

Onko sinulla kysymys meille? Mainitse se kommenttiosassa ja palaamme sinuun.

Aiheeseen liittyvät julkaisut:

Miksi sinun pitäisi oppia Spark Hadoopin hallinnan jälkeen

Apache Spark Vs Hadoop -kartan vähennys