Demistifikuojantis skaidymas „Spark“



Šis tinklaraštis nurodo viską, ką reikia žinoti apie skaidymą „Spark“, skaidinių tipus ir kaip tai pagerina raktų transformacijų vykdymo greitį.

Prisidėjo Prithviraj Bose

Žiežirbos Elastingi paskirstyti duomenų rinkiniai (programavimo abstrakcija) yra vertinami tingiai, o transformacijos saugomos kaip nukreipti acikliniai grafikai (DAG). Taigi kiekvienas veiksmas dėl RDD privers „Spark“ perskaičiuoti DAG. Taip „Spark“ pasiekiamas atsparumas, nes jei kuris nors darbuotojo mazgas sugenda, DAG tiesiog reikia perskaičiuoti.



Taip pat privaloma talpykloje (išlieka su tinkamu saugojimo lygiu) RDD taip, kad dažni veiksmai su RDD neverčia „Spark“ perskaičiuoti DAG.Šiame tinklaraštyje aptariamos temos iš esmės reikalingos „Apache Spark“ ir „Scala“ sertifikatams gauti. Iš esmės reikalingos šiame tinklaraštyje aptariamos temos .

Kodėl verta naudoti skaidinį?

Skaičiuojant klasterius pagrindinis uždavinys yra sumažinti tinklo srautą. Kai duomenys orientuoti į raktinę vertę, skaidymas tampa būtinas, nes vėlesnėms RDD transformacijoms tinkle yra nemažai duomenų. Jei panašūs raktai ar raktų diapazonas yra saugomi tame pačiame skaidinyje, maišymas sumažėja iki minimumo ir apdorojimas tampa iš esmės greitas.



Transformacijoms, kurioms reikalingi duomenų maišai tarp darbuotojų mazgų, labai naudinga skaidyti. Tokios transformacijos yra cogroup, groupWith, join, leftOuterJoin, rightOuterJoin, groupByKey, reducByKey, combByKey ir peržiūra .

Pertvaras galima konfigūruoti, jei RDD yra pagrindinė vertė.

Padalijimo ypatybės

  1. Garantuojama, kad toje pačioje skaidinyje esantys rinkiniai yra toje pačioje mašinoje.
  2. Kiekviename klasterio mazge gali būti daugiau nei vienas skaidinys.
  3. Bendras skaidinių skaičius yra konfigūruojamas, pagal numatytuosius nustatymus jis nustatytas į bendrą visų vykdytojų mazgų branduolių skaičių.

Padalijimo tipai kibirkštyje

„Spark“ palaiko dviejų tipų skaidymą,

  • Maišos skaidymas : Naudoja „Java“ Object.hashCode metodas nustatyti skaidinį kaip skaidinys = key.hashCode ()% numPartitions.

hash-partitioning-demystifying-partitioning-in-spark



  • Diapazono skaidymas : Naudoja diapazoną, kad paskirstytų atitinkamiems skaidiniams raktus, kurie patenka į diapazoną. Šis metodas tinka tais atvejais, kai raktai yra natūraliai išdėstyti, o raktai nėra neigiami. Žemiau pateiktame kodo fragmente rodomas diapazono skaidiklio naudojimas.

Kodo pavyzdys

Pažiūrėkime pavyzdį, kaip padalinti duomenis tarp darbuotojų mazgų. Galimas visas „Scala“ kodas čia .

Štai keletas 12 koordinačių (kaip rinkinių) bandymo duomenų,

Sukurkite org.apache.spark.HashPartitioner 2 dydžio, kur raktai bus padalyti per šias dvi skaidinius pagal raktų maišos kodą.

Tada mes galime apžiūrėti poras ir atlikti įvairius klavišais pagrįstus pakeitimus „foldByKey“ ir reducByKey.

Apibendrinant galima pasakyti, kad skaidymas labai pagerina raktų transformacijų vykdymo greitį.

Turite mums klausimą? Prašau paminėti tai komentarų skiltyje ir mes su jumis susisieksime.

kaip padaryti perspėjimą javascript

Susijusios žinutės:

Kodėl turėtumėte išmokti kibirkštį įvaldę Hadoop

„Apache Spark Vs Hadoop MapReduce“