Spark үр дүнгийн хослол энэ нь үйл явц юм их хэмжээний өгөгдөлд дүн шинжилгээ хийх, боловсруулахад үндэс суурь болдог. Түгээмэл тархсан боловсруулалтын хүрээ болох Spark нь таны орчинд гүйцэтгэсэн үйлдлүүдийн үр дүнг нэгтгэх, нэгтгэх хэд хэдэн сонголтыг санал болгодог. Энэ нийтлэлд бид Spark-ийн үр дүнг нэгтгэх янз бүрийн техник, аргуудыг судлах болно үр ашигтай. RDD-г нэгтгэхээс эхлээд нэгтгэх үйлдлүүдийг ашиглах хүртэл та хурдан, үнэн зөв үр дүнд хүрэхийн тулд Spark-аас санал болгож буй боломжуудыг хэрхэн ашиглах талаар олж мэдэх болно. таны төслүүдэд Big Data.
RDD-ийн хослол Энэ нь Spark-д үр дүнг нэгтгэх хамгийн энгийн бөгөөд нийтлэг аргуудын нэг юм. RDDs (Resilient Distributed Datasets) нь Spark дахь үндсэн өгөгдлийн бүтэц бөгөөд тархсан болон зэрэгцээ үйл ажиллагаа явуулах боломжийг олгодог. үр дүнтэй аргаар. Хоёр ба түүнээс дээш RDD-г нэгтгэснээр өгөгдлийн багцуудын хооронд нэгдэх, огтлолцох, ялгаа зэрэг үйлдлүүдийг гүйцэтгэх боломжтой бөгөөд ингэснээр Spark-д гүйцэтгэсэн үйлдлийн үр дүнг удирдах, нэгтгэх уян хатан байдлыг бий болгодог.
Spark дахь үр дүнг нэгтгэх өөр нэг арга нэгтгэх үйлдлээр дамждаг. Эдгээр үйлдлүүд нь нийлбэр, дундаж, хамгийн их эсвэл хамгийн бага зэрэг нэгтгэх функцийг ашиглан олон үр дүнг нэг болгон нэгтгэх боломжийг олгодог. Эдгээр үйлдлүүдийг ашиглан нэг алхамаар их хэмжээний өгөгдлөөс нэгтгэсэн, нэгтгэсэн үр дүнг авах боломжтой бөгөөд энэ нь өгөгдлийн багц дээр хэмжигдэхүүн эсвэл статистикийг тооцоолох шаардлагатай тохиолдолд ялангуяа ашигтай байж болно.
RDD нэгтгэх, нэгтгэх үйлдлээс гадна Spark нь хуримтлуулах хувьсагчийг ашиглах, багасгах функцийг ашиглах зэрэг үр дүнг нэгтгэх бусад аргуудыг санал болгодог. Хуримтлуулах хувьсагч нь үр дүнг нэгтгэх боломжийг танд олгоно үр дүнтэй арга Нэг газар, ялангуяа та өөр өөр ажлуудын хооронд мэдээлэл хуваалцахыг хүсч байгаа үед. Нөгөөтэйгүүр, багасгах функцууд нь хэрэглэгчийн тодорхойлсон үйлдлийг ашиглан олон үр дүнг нэгтгэх боломжийг олгодог. Эдгээр аргууд нь Spark-д үр дүнг хэрхэн нэгтгэх талаар илүү уян хатан байдал, хяналтыг бий болгодог.
Дүгнэж хэлэхэд, of үр дүнг нэгтгэснээр Spark Энэ нь их хэмжээний өгөгдлийг удирдах, шинжлэхэд зайлшгүй шаардлагатай үйл явц юм. үр дүнтэй арга. Spark нь RDD-ийг нэгтгэх, нэгтгэх үйлдлүүд, хуримтлалын хувьсагчдыг ашиглах, багасгах функц зэрэг үр дүнг нэгтгэх янз бүрийн техник, аргуудыг санал болгодог. Эдгээр хэрэгслүүдийн давуу талыг бүрэн ашигласнаар хөгжүүлэгчид болон шинжээчид өөрсдийн хөгжлийн төсөлдөө үнэн зөв, хурдан үр дүнд хүрч чадна. Их мэдээлэл. Дараах хэсгүүдэд бид эдгээр техник бүрийг нарийвчлан судалж, үр дүнг Spark-д хэрхэн нэгтгэж байгааг илүү сайн ойлгохын тулд практик жишээг санал болгох болно.
1. Алгоритмуудад нэгдэх Spark дээр ашиглах боломжтой
Spark нь параллель үйлдлийн үр дүнг нэгтгэх олон төрлийн алгоритмуудыг санал болгодог тархсан тооцооллын систем юм. Эдгээр алгоритмууд нь том өгөгдлийн орчинд үр ашиг, өргөтгөх чадварыг оновчтой болгох зорилготой юм. Spark-д хамгийн их хэрэглэгддэг нэгдэх алгоритмуудын заримыг доор харуулав.
- Нийлүүлэх: Энэ алгоритм нь эрэмбэлэгдсэн хоёр өгөгдлийн багцыг нэг эрэмбэлэгдсэн багц болгон нэгтгэдэг. Энэ нь өгөгдлийг үр дүнтэй нэгтгэж, нэгтгэх үйл ажиллагааг жигд явуулахын тулд хуваагаад ялах аргыг ашигладаг.
- Нэгдэх: Нэгдэх алгоритм нь нийтлэг түлхүүр дээр суурилсан хоёр багц өгөгдлийг нэгтгэдэг. Энэ нь нэгтгэх үйл явцыг оновчтой болгохын тулд хуваах, өгөгдлийг дахин хуваарилах зэрэг аргуудыг ашигладаг. Энэ алгоритм нь хүснэгтэд нэгдэх үйлдлүүдэд маш хэрэгтэй SQL асуулга.
- GroupByKey: Энэ алгоритм нь түлхүүр бүртэй холбоотой утгуудыг өгөгдлийн багц болгон бүлэглэдэг. Өгөгдсөн түлхүүр дээр үндэслэн нэмэх, дундажлах зэрэг нэгтгэх үйлдлүүдийг хийх шаардлагатай үед энэ нь ялангуяа ашигтай байдаг.
Эдгээр нэгдэх алгоритмууд нь Spark дээр байгаа сонголтуудын жишээ юм. Тус бүр нь өвөрмөц давуу талуудыг санал болгодог бөгөөд програмын тусгай шаардлагаас хамааран өөр өөр хувилбарт ашиглаж болно. Spark төслүүдийн оновчтой гүйцэтгэл, өргөтгөх чадварыг хангахын тулд эдгээр алгоритмуудыг ойлгож, бүрэн ашиглах нь чухал юм.
2. Spark дахь өгөгдлийн хослолын аргууд
Тэд байдаг олон Энэ нь янз бүрийн өгөгдлийн багцыг үр дүнтэй нэгтгэх боломжийг олгодог. Хамгийн түгээмэл аргуудын нэг бол нэгдэх арга, энэ нь хоёр буюу түүнээс дээш тооны өгөгдлийн багцыг нийтлэг түлхүүр ашиглан нэгтгэх боломжийг олгодог. Өвөрмөц танигч гэх мэт тодорхой шинж чанарт үндэслэн өгөгдлийг хооронд нь холбохыг хүсвэл энэ арга нь ялангуяа ашигтай байдаг. Spark нь янз бүрийн хувилбарт дасан зохицохын тулд дотоод нэгдэл, зүүн нэгдэл, баруун талын нэгдэл, бүрэн гаднах нэгдэл гэх мэт өөр өөр төрлийн холболтыг санал болгодог.
Spark дахь өгөгдлийг нэгтгэх өөр нэг арга бол нэгтгэх арга. Энэ арга нь нийтлэг түлхүүр дээр суурилсан утгыг нэмэх замаар өгөгдлийг нэгтгэх боломжийг олгодог. Энэ нь ялангуяа тодорхой шинж чанарын нийлбэр, дундаж, хамгийн бага эсвэл дээд хэмжээг тооцоолох гэх мэт нэгтгэсэн үр дүнг авахыг хүсч байвал ашигтай байдаг. Spark нь нийлбэр, тоо, дундаж, мин, макс зэрэг олон төрлийн нэгтгэх функцийг санал болгодог бөгөөд ингэснээр үүнийг хялбар болгодог. Энэ процесс.
Дээр дурдсан аргуудаас гадна Spark бас санал болгодог хөндлөн үйл ажиллагаа, энэ нь хоёр багц өгөгдлийг нийтлэг түлхүүргүйгээр нэгтгэх боломжийг олгодог. Эдгээр үйлдлүүд нь хоёр багцын элементүүдийн хооронд "боломжтой бүх хослолыг" үүсгэдэг бөгөөд үүсгэх гэх мэт тохиолдолд ашигтай байж болно. бүтээгдэхүүний Декарт эсвэл өргөн хүрээтэй туршилт хийх өгөгдлийн багц үүсгэх. Гэсэн хэдий ч тооцоолох хүчин чадал шаардагдах тул эдгээр үйлдлүүд нь гүйцэтгэх хугацаа, нөөцийн хувьд өндөр өртөгтэй байж болно.
3. Spark-д үр дүнг нэгтгэхдээ анхаарах хүчин зүйлс
Spark тархсан боловсруулалт
Spark-ийн хамгийн чухал давуу талуудын нэг нь их хэмжээний өгөгдлийг тархсан байдлаар боловсруулах чадвар юм. Энэ нь түүний санах ойн боловсруулалтын хөдөлгүүртэй холбоотой бөгөөд Spark-д үр дүнг нэгтгэхдээ оновчтой гүйцэтгэлийг хангахын тулд үүнийг анхаарч үзэх нь чухал юм. Зангилаа хооронд даалгавруудыг үр ашигтай хуваарилж, байгаа нөөцийг дээд зэргээр ашиглах нь чухал.
Өгөгдлийн кэш ба тогтвортой байдал
-ийн хэрэглээ кэш болон өгөгдлийн тогтвортой байдал нь Spark дахь үр дүнг нэгтгэх үед анхаарах өөр нэг гол хүчин зүйл юм. Үйл ажиллагаа хийгдэх үед Spark үр дүнг хэрхэн тохируулсанаас хамааран санах ой эсвэл дискэнд хадгалдаг. Тохиромжтой кэш хийх эсвэл тууштай ажиллах замаар өгөгдлийг ирээдүйн асуулга, тооцоололд ашиглах боломжтой газарт хадгалах боломжтой бөгөөд ингэснээр үр дүнг дахин тооцоолох шаардлагагүй болно. Энэ нь Spark-д олон үр дүнг нэгтгэх үед гүйцэтгэлийг мэдэгдэхүйц сайжруулж чадна.
Зөв алгоритмыг сонгох
Spark-д үр дүнг нэгтгэх үед зөв алгоритмыг сонгох нь бас чухал хүчин зүйл бөгөөд өгөгдлийн төрөл болон хүссэн үр дүнгээс хамааран зарим алгоритмууд бусдаас илүү үр дүнтэй байдаг. Жишээлбэл, хэрэв та гүйцэтгэхийг хүсвэл a бүлэглэх o ангилал өгөгдлийн хувьд та K-means эсвэл Logistic Regression гэх мэт тохирох алгоритмуудыг сонгож болно. Зөв алгоритмыг сонгосноор боловсруулалтын хугацааг багасгаж, Spark дээр илүү нарийвчлалтай үр дүнг авах боломжтой.
4. Spark дахь үр дүнтэй өгөгдөл нэгтгэх стратеги
Spark бол их хэмжээний өгөгдлийг үр ашигтай зохицуулах чадвараараа өргөн хэрэглэгддэг өгөгдөл боловсруулах систем юм. Spark-ийн гол шинж чанаруудын нэг нь өгөгдлийг үр дүнтэй хослуулах чадвар бөгөөд энэ нь олон хэрэглээний тохиолдолд зайлшгүй шаардлагатай байдаг. Хэд хэдэн байдаг Төслийн шаардлагаас хамааран ашиглаж болно.
Spark дахь өгөгдлийг нэгтгэх хамгийн түгээмэл стратегиудын нэг бол нэгдэх, энэ нь нийтлэг баганад тулгуурлан хоёр буюу түүнээс дээш тооны өгөгдлийн багцыг нэгтгэх боломжийг олгодог. Холболт нь дотоод холболт, гадаад холболт, зүүн эсвэл баруун холболт зэрэг хэд хэдэн төрөлтэй байж болно авах.
Spark дахь өгөгдлийг нэгтгэх өөр нэг үр дүнтэй стратеги бол дахин хуваах. Дахин хуваах нь гол багана эсвэл баганын багц дээр үндэслэн Spark кластерт өгөгдлийг дахин хуваарилах үйл явц юм. Та дараа нь нэгдэх үйлдлийг ашиглан өгөгдлийг илүү үр дүнтэй нэгтгэхийг хүсвэл энэ нь хэрэг болно. функцийг ашиглан дахин хуваах боломжтой хэлтэс Spark-д.
5. Spark-д үр дүнг нэгтгэх үед гүйцэтгэлд анхаарах зүйлс
Spark-д үр дүнг нэгтгэхдээ гүйцэтгэлийн зарим зүйлийг анхаарч үзэх нь чухал. Энэ нь нэгтгэх үйл явц үр дүнтэй байх ба програмын гүйцэтгэлийн хугацаанд нөлөөлөхгүй гэдгийг баталгаажуулдаг. Spark-д үр дүнг нэгтгэх үед гүйцэтгэлийг оновчтой болгох зарим зөвлөмжийг энд оруулав.
1. Холимог үйлдлээс зайлсхий: зэрэг холих үйлдлүүд groupByKey аль аль нь бууруулахByKey, кластерийн зангилааны хооронд өгөгдөл дамжуулахтай холбоотой тул гүйцэтгэлийн хувьд үнэтэй байж болно. Үүнээс зайлсхийхийн тулд нэгтгэх үйлдлүүдийг ашиглахыг зөвлөж байна бууруулахByKey o groupBy үүний оронд тэд өгөгдлийн хөдөлгөөнийг багасгадаг.
2. Завсрын өгөгдлийн кэшийг ашиглах: Spark-д үр дүнг нэгтгэх үед завсрын өгөгдлийг олон үйлдэлд ашиглаж болно. Гүйцэтгэлийг сайжруулахын тулд функцийг ашиглахыг зөвлөж байна кэш() o үргэлжлүүлэх() энэ завсрын өгөгдлийг санах ойд хадгалах. Энэ нь тэдгээрийг дараагийн үйл ажиллагаанд ашиглах бүрт дахин тооцоолох шаардлагагүй болно.
3. Зэрэгцүүлэлтийн давуу талыг ашиглах: Spark нь зэрэгцээ боловсруулах чадвараараа алдартай бөгөөд энэ нь кластерын олон зангилаа дээр даалгавруудыг зэрэгцүүлэн гүйцэтгэх боломжийг олгодог. Үр дүнг нэгтгэхдээ энэ зэрэгцүүлэх чадварыг ашиглах нь чухал юм. Үүнийг хийхийн тулд гэх мэт үйлдлүүдийг ашиглахыг зөвлөж байна газрын зургийн хуваалтууд o хавтгай газрын зурагӨгөгдлийг RDD хуваалт бүрт зэрэгцүүлэн боловсруулах боломжийг олгодог.
6. Spark-д үр дүнг нэгтгэх оновчлол
Энэ нь манай програмуудын гүйцэтгэл, үр ашгийг дээшлүүлэх гол тал юм. Spark-д бид шүүлтүүр, зураглал, нэгтгэх зэрэг үйлдлүүдийг гүйцэтгэх үед завсрын үр дүнг нэгтгэхээс өмнө санах ой эсвэл дискэнд хадгалдаг. Гэхдээ өгөгдлийн тохиргоо, хэмжээ зэргээс шалтгаалан энэ хослол нь цаг хугацаа, нөөцийн хувьд өндөр өртөгтэй байж болно.
Энэхүү хослолыг оновчтой болгохын тулд Spark нь өгөгдлийг хуваах, зэрэгцээ гүйцэтгэх зэрэг янз бүрийн арга техникийг ашигладаг. Өгөгдлийн хуваалт нь өгөгдлийн багцыг жижиг хэсгүүдэд хувааж, өөр өөр зангилаанууд дээр тарааж байгаа нөөцийг бүрэн ашиглахаас бүрдэнэ. Энэ нь зангилаа бүр өөрийн өгөгдлийг бие даан, зэрэгцээ боловсруулах боломжийг олгодог бөгөөд ингэснээр гүйцэтгэлийн хугацааг багасгадаг.
Өөр нэг чухал тал бол зэрэгцээ гүйцэтгэл, Spark нь үйлдлүүдийг өөр өөр даалгавар болгон хувааж, өөр өөр зангилаанууд дээр нэгэн зэрэг гүйцэтгэдэг. Энэ нь боловсруулалтын нөөцийг үр ашигтай ашиглах боломжийг олгож, үр дүнгийн хослолыг хурдасгадаг. Нэмж дурдахад, Spark нь өгөгдлийн хэмжээ болон зангилааны хүчин чадал дээр үндэслэн даалгаврын тоог автоматаар тохируулах чадвартай бөгөөд ингэснээр гүйцэтгэл ба үр ашгийн хоорондын оновчтой тэнцвэрийг хангана. Эдгээр оновчлолын арга нь Spark дахь манай програмуудын хариу өгөх хугацааг мэдэгдэхүйц сайжруулахад хувь нэмэр оруулдаг.
7. Spark-д үр дүнг нэгтгэх үед зөрчилдөөнөөс зайлсхийх зөвлөмжүүд
:
1. Холболтын тохиромжтой аргыг ашиглана уу: Spark-д үр дүнг нэгтгэхдээ зөрчилдөөнөөс зайлсхийх, үнэн зөв үр дүнд хүрэхийн тулд тохирох аргыг ашиглах нь чухал юм. Spark нь нэгдэх, нэгдэх, нэгтгэх гэх мэт өөр өөр аргуудыг өгдөг. Арга тус бүрийн ялгааг ойлгож, тухайн даалгаварт хамгийн тохиромжтойг нь сонгох шаардлагатай. Нэмж дурдахад, үр дүнгийн гүйцэтгэл, нарийвчлалд нөлөөлж болзошгүй тул арга тус бүрийн параметрүүд болон сонголтуудтай танилцахыг зөвлөж байна.
2. Өргөн хүрээний өгөгдөл цэвэрлэх: Үр дүнг Spark-д нэгтгэхийн өмнө өгөгдлийг сайтар цэвэрлэх нь чухал юм. Үүнд тэг утгууд, давхардал, хэт давчуу утгыг арилгахаас гадна үл нийцэх байдал, зөрүүг арилгах зэрэг орно. Өгөгдлийн зөв цэвэрлэгээ нь нэгдсэн үр дүнгийн бүрэн бүтэн байдал, тууштай байдлыг баталгаажуулдаг. Нэмж хэлэхэд, нэгтгэхээс өмнө болзошгүй алдааг тодорхойлохын тулд өгөгдлийн чанарын шалгалтыг хийх ёстой.
3. Тохирох хуваалтыг сонгоно уу: Spark дахь өгөгдлийг хуваах нь нэгдэх үйлдлүүдийн гүйцэтгэлд чухал нөлөө үзүүлдэг. Үр дүнг нэгтгэхийн өмнө өгөгдлийн хуваалтыг оновчтой болгох, үр ашгийг нэмэгдүүлэхийн тулд өгөгдлийн багцыг жигд, тэнцвэртэй хуваахыг зөвлөж байна. Spark нь өгөгдлийг оновчтой хуваарилахад ашиглагдах repartition болон partitionBy гэх мэт төрөл бүрийн хуваалтын сонголтыг санал болгодог. Зөв хуваалтыг сонгосноор та саад бэрхшээлээс зайлсхийж, нэгтгэх үйл явцын ерөнхий гүйцэтгэлийг сайжруулна.
Би Себастьян Видал, компьютерийн инженер технологи, өөрийн гараар хийх сонирхолтой. Цаашилбал, би бүтээгч нь tecnobits.com, би технологийг хүн бүрт илүү хүртээмжтэй, ойлгомжтой болгох хичээлүүдийг хуваалцдаг.