Аналитик платформд бага код хэрэглэх

Эрхэм уншигчид, энэ өдрийн мэнд!

Мэдээлэл цуглуулах, дүн шинжилгээ хийх мэдээллийн технологийн платформыг бий болгох ажил нь оюуны ачаалал ихтэй үйлчилгээ үзүүлэх загвар эсвэл техникийн нарийн төвөгтэй бүтээгдэхүүн бий болгоход суурилсан аливаа компанийн хувьд эрт орой хэзээ нэгэн цагт бий болдог. Аналитик платформыг бий болгох нь нарийн төвөгтэй бөгөөд цаг хугацаа шаардсан ажил юм. Гэсэн хэдий ч аливаа ажлыг хялбаршуулж болно. Энэ нийтлэлд би аналитик шийдлийг бий болгоход туслах бага кодтой хэрэгслийг ашиглах туршлагаа хуваалцахыг хүсч байна. Энэхүү туршлага нь Neoflex компанийн Big Data Solutions чиглэлээр хэд хэдэн төслийг хэрэгжүүлэх явцад олж авсан. 2005 оноос хойш Neoflex-ийн Big Data Solutions чиглэл нь мэдээллийн агуулах, нуур барих, мэдээлэл боловсруулах хурдыг оновчтой болгох асуудлыг шийдвэрлэх, мэдээллийн чанарын удирдлагын арга зүй дээр ажиллаж байна.

Аналитик платформд бага код хэрэглэх

Сул ба/эсвэл хүчтэй бүтэцтэй өгөгдлийг ухамсартайгаар хуримтлуулахаас хэн ч зайлсхийх боломжгүй. Магадгүй бид жижиг бизнесийн тухай ярьж байгаа ч гэсэн. Эцсийн эцэст бизнесээ өргөжүүлэхдээ ирээдүйтэй бизнес эрхлэгч үнэнч байх хөтөлбөр боловсруулах асуудалтай тулгарах болно, борлуулалтын цэгүүдийн үр нөлөөг шинжлэхийг хүсч, зорилтот зар сурталчилгааны талаар бодож, дагалдах бүтээгдэхүүний эрэлт хэрэгцээнд гайхах болно. . Анхны таамаглалаар асуудлыг "өвдөг дээрээ" шийдэж болно. Гэхдээ бизнес өсөхийн хэрээр аналитик платформд орох нь зайлшгүй хэвээр байна.

Гэсэн хэдий ч ямар тохиолдолд өгөгдлийн аналитик даалгаврууд нь "Пуужингийн шинжлэх ухаан" ангиллын асуудал болж хувирах вэ? Магадгүй бид үнэхээр том өгөгдлийн тухай ярьж байгаа тэр мөчид.
Rocket Science-ийг хялбар болгохын тулд та зааныг хэсэг хэсгээр нь идэж болно.

Аналитик платформд бага код хэрэглэх

Таны програмууд/үйлчилгээнүүд/микро үйлчилгээнүүд илүү салангид, бие даасан байх тусам танд, танай хамт олон болон бүх бизнест зааныг шингээхэд хялбар байх болно.

Манай бараг бүх үйлчлүүлэгчид DevOps багуудын инженерийн практик дээр үндэслэн ландшафтыг сэргээн босгосны дараа энэ үзэл баримтлалд хүрсэн.

Гэсэн хэдий ч "тусдаа, зааны" хоолны дэглэмтэй байсан ч бид мэдээллийн технологийн ландшафтыг "хэт ханах" сайн боломж байна. Энэ мөчид зогсоод, амьсгалаа гаргаж, хажуу тийшээ харах нь зүйтэй бага кодтой инженерийн платформ.

Олон хөгжүүлэгчид код шууд бичихээс татгалзаж, бага кодтой системийн UI интерфэйс дэх сумыг "чирэх" рүү шилжих үед карьераа мухардалд орохоос айдаг. Гэхдээ машин хэрэгсэл бий болсон нь инженерүүд алга болоход хүргэсэнгүй, харин тэдний ажлыг шинэ түвшинд авчирсан!

Яагаад гэдгийг олж мэдье.

Логистик, харилцаа холбооны салбар, хэвлэл мэдээллийн судалгаа, санхүүгийн салбар дахь мэдээллийн дүн шинжилгээ нь дараахь асуултуудтай үргэлж холбоотой байдаг.

  • Автомат дүн шинжилгээ хийх хурд;
  • Мэдээллийн үйлдвэрлэлийн үндсэн урсгалд нөлөөлөхгүйгээр туршилт хийх чадвар;
  • Бэлтгэсэн мэдээллийн найдвартай байдал;
  • Хяналт, хувилбарыг өөрчлөх;
  • Өгөгдлийн баталгаа, Өгөгдлийн удам угсаа, CDC;
  • Шинэ боломжуудыг үйлдвэрлэлийн орчинд хурдан хүргэх;
  • Мөн алдартай нь: хөгжүүлэлт, дэмжлэгийн зардал.

Өөрөөр хэлбэл, инженерүүдэд асар олон тооны өндөр түвшний даалгавар байдаг бөгөөд үүнийг зөвхөн доод түвшний хөгжлийн даалгавраас ухамсараа цэвэрлэх замаар хангалттай үр дүнтэй гүйцэтгэх боломжтой.

Хөгжүүлэгчдийн шинэ түвшинд шилжих урьдчилсан нөхцөл нь бизнесийн хувьсал, дижиталчлал байв. Хөгжүүлэгчийн үнэ цэнэ мөн өөрчлөгдөж байна: автоматжуулж буй бизнесийн үзэл баримтлалд өөрсдийгөө шингээж чадах хөгжүүлэгчид ихээхэн дутагдалтай байна.

Доод түвшний болон өндөр түвшний програмчлалын хэлтэй адилтгаж үзье. Доод түвшний хэлнээс өндөр түвшний хэл рүү шилжих нь "техник хангамжийн хэл дээрх шууд заавар" бичихээс "хүмүүсийн хэл дээрх удирдамж" руу шилжих шилжилт юм. Энэ нь хийсвэрлэлийн зарим давхаргыг нэмэх явдал юм. Энэ тохиолдолд өндөр түвшний програмчлалын хэлнээс бага кодтой платформ руу шилжих нь "хүмүүсийн хэл дээрх удирдамж" -аас "бизнесийн хэл дээрх удирдамж" руу шилжих шилжилт юм. Хэрэв энэ баримтад харамсаж буй хөгжүүлэгчид байгаа бол массив эрэмбэлэх функцийг ашигладаг Java скрипт үүссэн цагаас хойш тэд харамсаж байсан байх. Мэдээжийн хэрэг, эдгээр функцууд нь ижил түвшний програмчлалын бусад хэрэгслээр бүрээсийн доор програм хангамжийн хэрэгжилттэй байдаг.

Тиймээс бага код нь хийсвэрлэлийн өөр түвшний дүр төрх юм.

Бага код ашиглах туршлага

Бага кодтой сэдэв нь нэлээд өргөн хүрээтэй боловч одоо би нэг төслийн жишээн дээр "бага кодтой ойлголт" -ыг практикт ашиглах талаар ярихыг хүсч байна.

Neoflex-ийн Big Data Solutions хэлтэс нь бизнесийн санхүүгийн салбарт илүү мэргэшсэн, мэдээллийн агуулах, нуур барих, төрөл бүрийн тайланг автоматжуулах чиглэлээр ажилладаг. Энэ талбарт бага код ашиглах нь удаан хугацааны туршид стандарт болсон. Бусад бага кодтой хэрэгслүүдийн дунд бид ETL процессуудыг зохион байгуулах хэрэгслүүдийг дурдаж болно: Informatica Power Center, IBM Datastage, Pentaho Data Integration. Эсвэл Oracle Apex нь өгөгдөлд хандах, засварлах интерфейсийг хурдацтай хөгжүүлэх орчин болж өгдөг. Гэсэн хэдий ч бага кодтой хөгжүүлэлтийн хэрэгслийг ашиглах нь борлуулагчаас тодорхой хамааралтай арилжааны технологийн стек дээр өндөр зорилтот програмуудыг бүтээхэд үргэлж ордоггүй.

Бага кодтой платформуудыг ашигласнаар та мэдээллийн урсгалын зохион байгуулалтыг зохион байгуулж, өгөгдлийн шинжлэх ухааны платформ эсвэл жишээлбэл өгөгдлийн чанарыг шалгах модулиудыг үүсгэж болно.

Бага кодтой хөгжүүлэлтийн хэрэгслийг ашиглах туршлагын нэг жишээ бол Оросын хэвлэл мэдээллийн судалгааны зах зээлд тэргүүлэгчдийн нэг болох Neoflex болон Mediascope-ийн хамтын ажиллагаа юм. Энэ компанийн бизнесийн зорилтуудын нэг нь зар сурталчилгаа, интернет платформ, телевизийн суваг, радио станц, зар сурталчилгааны агентлаг, брэндүүд зар сурталчилгаа худалдан авах шийдвэр гаргаж, маркетингийн харилцаа холбоогоо төлөвлөхөд үндэслэн мэдээлэл үйлдвэрлэх явдал юм.

Аналитик платформд бага код хэрэглэх

Хэвлэл мэдээллийн судалгаа бол технологийн ачаалал ихтэй бизнесийн салбар юм. Видеоны дарааллыг таних, үзэхэд дүн шинжилгээ хийдэг төхөөрөмжөөс мэдээлэл цуглуулах, вэб нөөцийн үйл ажиллагааг хэмжих зэрэг нь тус компани мэдээллийн технологийн олон ажилтантай, аналитик шийдлийг бий болгох асар их туршлагатай болохыг харуулж байна. Гэвч мэдээллийн хэмжээ, эх сурвалжийн тоо, төрөл бүрийн өсөлт нь МТ-ийн өгөгдлийн салбарыг байнга ахиц дэвшил гаргахад хүргэдэг. Аль хэдийн ажиллаж байгаа Mediascope аналитик платформыг өргөжүүлэх хамгийн энгийн шийдэл бол мэдээллийн технологийн ажилтнуудыг нэмэгдүүлэх явдал юм. Гэхдээ илүү үр дүнтэй шийдэл бол хөгжлийн үйл явцыг хурдасгах явдал юм. Энэ чиглэлд хөтлөх алхамуудын нэг нь бага кодтой платформ ашиглах явдал байж болох юм.

Төсөл хэрэгжиж эхлэх үед компани аль хэдийн ажиллаж байгаа бүтээгдэхүүний шийдэлтэй байсан. Гэсэн хэдий ч, MSSQL-д уг шийдлийг хэрэгжүүлэх нь хүлээн зөвшөөрөгдөхүйц хөгжүүлэлтийн зардлыг хадгалахын зэрэгцээ өргөтгөх функцийн хүлээлтийг бүрэн хангаж чадахгүй байв.

Бидний өмнө тавьсан даалгавар бол үнэхээр их амбицтай байсан - Neoflex болон Mediascope нь эхлэх огнооны эхний улиралд багтаан MVP-г гаргасан тохиолдолд нэг жил хүрэхгүй хугацаанд үйлдвэрлэлийн шийдлийг бий болгох ёстой байв.

Hadoop технологийн стекийг бага кодтой тооцоололд суурилсан шинэ өгөгдлийн платформыг бий болгох үндэс болгон сонгосон. HDFS нь паркетан файлуудыг ашиглан өгөгдөл хадгалах стандарт болсон. Платформд байрлах өгөгдөлд хандахын тулд Hive-г ашигласан бөгөөд үүнд боломжтой бүх дэлгүүрийн нүүрийг гаднах хүснэгт хэлбэрээр харуулсан болно. Хадгалалт руу өгөгдөл ачаалах ажлыг Kafka болон Apache NiFi ашиглан хэрэгжүүлсэн.

Энэхүү үзэл баримтлал дахь Lowe-код хэрэгслийг аналитик платформыг бий болгоход хамгийн их хөдөлмөр шаардсан ажил болох өгөгдлийг тооцоолох ажлыг оновчтой болгоход ашигласан.

Аналитик платформд бага код хэрэглэх

Өгөгдлийн зураглал хийх үндсэн механизмаар бага кодтой Datagram хэрэгслийг сонгосон. Neoflex Datagram хувиргалт болон мэдээллийн урсгалыг хөгжүүлэх хэрэгсэл юм.
Энэ хэрэгслийг ашигласнаар та Scala кодыг гараар бичихгүйгээр хийж болно. Scala код нь Model Driven Architecture аргыг ашиглан автоматаар үүсгэгддэг.

Энэ аргын илт давуу тал бол хөгжлийн үйл явцыг хурдасгах явдал юм. Гэхдээ хурдаас гадна дараахь давуу талууд бий.

  • Эх сурвалж/хүлээн авагчийн агуулга, бүтцийг харах;
  • Өгөгдлийн урсгалын объектуудын гарал үүслийг бие даасан талбарт (удам угсаа) мөрдөх;
  • Завсрын үр дүнг харах замаар хувиргалтыг хэсэгчлэн гүйцэтгэх;
  • Эх кодыг шалгаж, гүйцэтгэхийн өмнө тохируулах;
  • Өөрчлөлтийн автомат баталгаажуулалт;
  • 1-ийн 1-д автоматаар өгөгдөл татаж авах.

Өөрчлөлтийг бий болгоход бага кодтой шийдэлд нэвтрэх саад бэрхшээл нь маш бага байдаг: хөгжүүлэгч нь SQL-ийг мэддэг, ETL хэрэгслүүдтэй ажиллаж байсан туршлагатай байх шаардлагатай. Кодоор удирдуулсан хувиргах генераторууд нь үгийн өргөн утгаараа ETL хэрэгсэл биш гэдгийг дурдах нь зүйтэй. Бага кодтой хэрэгслүүд нь өөрийн гэсэн код гүйцэтгэх орчингүй байж болно. Өөрөөр хэлбэл, үүсгэсэн код нь бага кодтой шийдлийг суулгахаас өмнө кластер дээр байсан орчинд ажиллах болно. Энэ нь магадгүй бага кодтой үйлийн үрийн өөр нэг давуу тал юм. Бага кодтой багтай зэрэгцэн "сонгодог" баг ажиллах боломжтой, жишээлбэл, цэвэр Scala кодоор функцийг хэрэгжүүлдэг. Хоёр багийн сайжруулалтыг үйлдвэрлэлд оруулах нь энгийн бөгөөд саадгүй байх болно.

Бага кодтой байхаас гадна кодгүй шийдлүүд бас байдаг гэдгийг тэмдэглэх нь зүйтэй болов уу. Мөн үндсэндээ эдгээр нь өөр өөр зүйл юм. Бага код нь хөгжүүлэгчийг үүсгэсэн кодод илүү их саад учруулах боломжийг олгодог. Датаграмын хувьд үүсгэсэн Scala кодыг харах, засварлах боломжтой бөгөөд кодгүй бол ийм боломжийг олгохгүй байж болно. Энэ ялгаа нь зөвхөн шийдлийн уян хатан байдлын хувьд төдийгүй мэдээллийн инженерүүдийн ажлын тав тух, урам зоригийн хувьд маш чухал юм.

Шийдлийн архитектур

Бага кодтой хэрэгсэл нь өгөгдөл тооцоолох функцийг хөгжүүлэх хурдыг оновчтой болгох асуудлыг шийдвэрлэхэд яг хэрхэн тусалдаг болохыг олж мэдье. Эхлээд системийн функциональ архитектурыг харцгаая. Энэ тохиолдолд жишээ нь хэвлэл мэдээллийн судалгааны өгөгдөл үйлдвэрлэх загвар юм.

Аналитик платформд бага код хэрэглэх

Манай тохиолдолд мэдээллийн эх сурвалжууд нь маш олон төрлийн, олон янз байдаг:

  • Хүмүүсийн тоолуур (ТВ тоолуур) нь судалгаанд хамрагдаж буй өрхөд хэн, хэзээ, ямар телевизийн сувгийг үзсэн талаар телевизийн самбарт оролцогчдын хэрэглэгчийн зан төлөвийг уншдаг программ хангамж, техник хангамжийн төхөөрөмж юм. Өгөгдсөн мэдээлэл нь медиа багц болон медиа бүтээгдэхүүнтэй холбоотой өргөн нэвтрүүлгийг үзэх интервалын урсгал юм. Мэдээллийн нуур руу ачаалах үе шатанд байгаа өгөгдлийг хүн ам зүйн шинж чанар, геостратификация, цагийн бүс болон тодорхой медиа бүтээгдэхүүнийг телевизор үзэхэд дүн шинжилгээ хийхэд шаардлагатай бусад мэдээллээр баяжуулж болно. Авсан хэмжилтийг зар сурталчилгааны кампанит ажилд дүн шинжилгээ хийх, төлөвлөх, үзэгчдийн идэвх, сонирхлыг үнэлэх, өргөн нэвтрүүлгийн сүлжээг бүрдүүлэхэд ашиглаж болно;
  • Мэдээлэл нь телевизийн нэвтрүүлгийг дамжуулах хяналтын систем, интернет дэх видео нөөцийн контентыг үзэх боломжийг хэмжих системээс авч болно;
  • Сайт төвтэй болон хэрэглэгч төвтэй тоолуурыг багтаасан вэб орчинд хэмжих хэрэгсэл. Дата нуурын мэдээллийн үйлчилгээ үзүүлэгч нь судалгааны хөтчийн нэмэлт, суурилуулсан VPN-тэй гар утасны програм байж болно.
  • Мэдээллийг онлайн асуулга бөглөх үр дүн, компанийн санал асуулгад утсаар хийсэн ярилцлагын үр дүнг нэгтгэсэн сайтуудаас авч болно;
  • Дата нуурын нэмэлт баяжуулалтыг түнш компаниудын бүртгэлээс мэдээлэл татаж авах замаар хийж болно.

Эх сурвалжийн системээс түүхий мэдээллийн анхдагч шатлал руу ачаалах үйлдлийг янз бүрийн аргаар зохион байгуулж болно. Хэрэв эдгээр зорилгоор бага код ашигладаг бол мета өгөгдөл дээр суурилсан ачаалах скриптийг автоматаар үүсгэх боломжтой. Энэ тохиолдолд зорилтот зураглал руу чиглэсэн эх сурвалжийг боловсруулах түвшинд буух шаардлагагүй болно. Автомат ачааллыг хэрэгжүүлэхийн тулд бид эх сурвалжтай холболт үүсгэж, дараа нь ачаалах интерфейс дээр ачаалах объектуудын жагсаалтыг тодорхойлох хэрэгтэй. HDFS дахь лавлах бүтэц нь автоматаар үүсгэгдэх бөгөөд эх систем дэх өгөгдөл хадгалах бүтэцтэй тохирно.

Гэсэн хэдий ч энэ төслийн хүрээнд Mediascope компани Nifi + Kafka хослолыг ашиглан ижил төстэй үйлчилгээг бие даан үйлдвэрлэх ажлыг аль хэдийн эхлүүлсэн тул бага кодтой платформын энэ функцийг ашиглахгүй байхаар шийдсэн.

Эдгээр хэрэгслүүд нь солигддоггүй, харин нэмэлт зүйл гэдгийг нэн даруй тэмдэглэх нь зүйтэй. Nifi болон Kafka нь шууд (Nifi -> Kafka) болон урвуу (Kafka -> Nifi) холболтоор ажиллах боломжтой. Хэвлэл мэдээллийн судалгааны платформын хувьд багцын анхны хувилбарыг ашигласан.

Аналитик платформд бага код хэрэглэх

Манай тохиолдолд NayFi нь эх системээс янз бүрийн төрлийн өгөгдлийг боловсруулж, Кафка брокер руу илгээх шаардлагатай болсон. Энэ тохиолдолд PublishKafka Nifi процессоруудыг ашиглан Кафкагийн тодорхой сэдэв рүү мессеж илгээсэн. Эдгээр дамжуулах хоолойн зохион байгуулалт, засвар үйлчилгээ нь харааны интерфейсээр хийгддэг. Nifi хэрэгсэл болон Nifi + Kafka хослолыг ашиглах нь Big Data технологид нэвтрэхэд саад багатай, програм боловсруулах үйл явцыг хурдасгадаг хөгжилд бага кодтой арга гэж нэрлэж болно.

Төслийн хэрэгжилтийн дараагийн үе шат нь нарийвчилсан өгөгдлийг нэг семантик түвшний формат руу оруулах явдал байв. Хэрэв аж ахуйн нэгж түүхэн шинж чанартай бол тооцооллыг тухайн хуваалтын хүрээнд гүйцэтгэнэ. Хэрэв тухайн байгууллага нь түүхэн биш бол тухайн объектын бүх агуулгыг дахин тооцоолох эсвэл энэ объектыг дахин тооцоолохоос бүрэн татгалзах боломжтой (өөрчлөлт хийгдээгүйгээс). Энэ үе шатанд бүх аж ахуйн нэгжид зориулсан түлхүүрүүд үүсдэг. Түлхүүрүүд нь аналитик платформ дахь түлхүүрүүд болон эх системүүдийн түлхүүрүүдийн хоорондын захидал харилцааг агуулсан мастер объектуудтай харгалзах Hbase лавлахад хадгалагддаг. Атомын нэгжүүдийг нэгтгэх нь аналитик өгөгдлийн урьдчилсан тооцооны үр дүнгээр баяжуулах дагалддаг. Өгөгдлийн тооцооллын хүрээ нь Spark байсан. Өгөгдлийг нэг семантикт авчрах тайлбарласан функцийг мөн бага кодтой Datagram хэрэглүүрийн зураглал дээр үндэслэн хэрэгжүүлсэн.

Зорилтот архитектур нь бизнесийн хэрэглэгчдэд өгөгдөлд SQL хандалтыг шаарддаг. Энэ сонголтод Hive ашигласан. Бага кодтой хэрэглүүрийн "Hive Table бүртгэх" сонголтыг идэвхжүүлснээр объектууд үүрэнд автоматаар бүртгэгдэнэ.

Аналитик платформд бага код хэрэглэх

Тооцооллын урсгалын хяналт

Датаграм нь ажлын урсгалын загварыг бий болгох интерфейстэй. Oozie төлөвлөгчийг ашиглан зураглалыг эхлүүлж болно. Урсгал хөгжүүлэгчийн интерфейс дээр параллель, дараалсан эсвэл гүйцэтгэлээс хамааралтай өгөгдөл хувиргах схемийг үүсгэх боломжтой. Бүрхүүлийн скриптүүд болон java програмуудыг дэмждэг. Мөн Apache Livy серверийг ашиглах боломжтой. Apache Livy програмыг хөгжүүлэлтийн орчноос шууд ажиллуулахад ашигладаг.

Хэрэв компани аль хэдийн өөрийн процессын найруулагчтай бол REST API-г ашиглан одоогийн урсгал руу зураглал оруулах боломжтой. Жишээлбэл, бид Scala-д зураглалыг PLSQL болон Kotlin дээр бичигдсэн оркестрт оруулах талаар нэлээд амжилттай туршлагатай байсан. Бага кодтой хэрэглүүрийн REST API нь зураглалын загварт үндэслэн гүйцэтгэгдэх оныг үүсгэх, зураглалыг дуудах, зураглалын дарааллыг дуудах, мэдээжийн хэрэг URL руу параметрүүдийг дамжуулах зэрэг үйлдлүүдийг багтаасан болно.

Oozie-тэй хамт агаарын урсгалыг ашиглан тооцооллын урсгалыг зохион байгуулах боломжтой. Магадгүй би Oozie болон Airflow-ийн харьцуулалт дээр удаан зогсохгүй, гэхдээ хэвлэл мэдээллийн судалгааны төслийн ажлын хүрээнд Airflow-ийн сонголтод нийцсэн гэж хэлэх болно. Энэ удаагийн гол аргументууд нь бүтээгдэхүүнийг хөгжүүлж буй илүү идэвхтэй нийгэмлэг, илүү боловсронгуй интерфейс + API байв.

Тооцооллын процессыг тайлбарлахдаа хайртай Python-г ашигладаг тул агаарын урсгал нь бас сайн. Ерөнхийдөө нээлттэй эхийн ажлын урсгалын удирдлагын платформ тийм ч олон байдаггүй. Процессуудын гүйцэтгэлийг эхлүүлэх, хянах нь (Гантын графикийг оруулаад) зөвхөн Airflow-ийн үйлийн үрд оноо нэмнэ.

Бага кодтой шийдлийн зураглалыг эхлүүлэх тохиргооны файлын формат нь spark-submit болсон. Энэ нь хоёр шалтгааны улмаас болсон. Нэгдүгээрт, spark-submit нь консолоос jar файлыг шууд ажиллуулах боломжийг олгодог. Хоёрдугаарт, энэ нь ажлын урсгалыг тохируулахад шаардлагатай бүх мэдээллийг агуулж болно (энэ нь Dag үүсгэдэг скрипт бичихэд хялбар болгодог).
Манай тохиолдолд Агаарын урсгалын ажлын урсгалын хамгийн түгээмэл элемент бол SparkSubmitOperator байсан.

SparkSubmitOperator нь сав баглаа боодолтой Datagram зураглалыг урьдчилан үүсгэсэн оролтын параметрүүдийг ажиллуулах боломжийг танд олгоно.

Агаарын урсгалын даалгавар бүр нь тусдаа хэлхээнд ажилладаг бөгөөд бусад даалгаврын талаар юу ч мэдэхгүй гэдгийг дурдах нь зүйтэй. Тиймээс даалгавруудын хоорондын харилцан үйлчлэлийг DummyOperator эсвэл BranchPythonOperator гэх мэт хяналтын операторууд ашиглан гүйцэтгэдэг.

Хамтдаа авч үзвэл, Datagram бага кодтой шийдлийг тохиргооны файлуудыг түгээмэл болгох (Dag үүсгэх) зэрэг нь өгөгдөл ачаалах урсгалыг боловсруулах үйл явцыг ихээхэн хурдасгаж, хялбаршуулахад хүргэсэн.

Тооцооллыг харуулах

Магадгүй аналитик өгөгдөл үйлдвэрлэх хамгийн оюуны ачаалал ихтэй үе шат бол үзэсгэлэн гаргах үе шат юм. Судалгааны компанийн нэг өгөгдлийн тооцооны урсгалын хүрээнд энэ үе шатанд өгөгдлийг цагийн бүсийн залруулга, өргөн нэвтрүүлгийн сүлжээнд холбосон жишиг нэвтрүүлэг болгон бууруулна. Мөн орон нутгийн өргөн нэвтрүүлгийн сүлжээнд (орон нутгийн мэдээ, сурталчилгаа) тохируулах боломжтой. Бусад зүйлсийн дотор энэ алхам нь үзэх интервалын дүн шинжилгээнд үндэслэн медиа бүтээгдэхүүнийг тасралтгүй үзэх интервалыг задалдаг. Нэн даруй үзэх утгыг тэдгээрийн ач холбогдлын талаархи мэдээлэлд үндэслэн "жинлэнэ" (засварлах хүчин зүйлийн тооцоо).

Аналитик платформд бага код хэрэглэх

Үзүүлэн бэлтгэх тусдаа алхам бол өгөгдлийг баталгаажуулах явдал юм. Баталгаажуулах алгоритм нь математикийн шинжлэх ухааны хэд хэдэн загварыг ашиглахыг хамардаг. Гэсэн хэдий ч бага кодтой платформыг ашиглах нь нарийн төвөгтэй алгоритмыг хэд хэдэн тусдаа харагдахуйц унших боломжтой зураглал болгон хуваах боломжийг олгодог. Зураглал бүр нь нарийн даалгавар гүйцэтгэдэг. Үүний үр дүнд завсрын дибаг хийх, бүртгэх, өгөгдөл бэлтгэх үе шатуудыг дүрслэн харуулах боломжтой.

Баталгаажуулалтын алгоритмыг дараах дэд үе шатуудад хуваахаар шийдсэн.

  • Бүс нутгийн бүх сүлжээг 60 хоногийн турш үзэх замаар тухайн бүс нутагт телевизийн сүлжээний үзвэрийн хамаарлын регрессийг бий болгох.
  • Бүх регрессийн цэгүүд болон тооцоолсон өдрийн хувьд суралцсан үлдэгдлийг тооцоолох (регрессийн загвараар урьдчилан таамагласан бодит утгын хазайлт).
  • Төлбөр тооцооны өдрийн оюутны үлдэгдэл нормоос хэтэрсэн (үйл ажиллагааны тохиргоонд заасан) хэвийн бус бүс-сүлжээний хосуудын сонголт.
  • Тухайн бүс дэх сүлжээг үзсэн хариулагч бүрийн хувьд хэвийн бус бүс-телевизийн сүлжээний хосолсон оюутны залруулсан үлдэгдлийг дахин тооцоолох, энэ хариулагчийн оруулсан хувь нэмрийг (сурагчийн үлдэгдэлд гарсан өөрчлөлтийн хэмжээ) түүвэрээс хассан тохиолдолд тодорхойлох .
  • Хасагдах нь цалингийн өдрийн оюутны үлдэгдлийг хэвийн байдалд оруулах нэр дэвшигчдийг хайж олоорой.

Дээрх жишээ нь өгөгдлийн инженерийн толгойд хэтэрхий их зүйл байдаг гэсэн таамаглалыг баталж байна... Хэрэв энэ нь үнэхээр "кодлогч" биш "инженер" юм бол бага кодтой хэрэгслийг ашиглахдаа мэргэжлийн доройтлоос айдаг. эцэст нь ухрах ёстой.

Бага код өөр юу хийж чадах вэ?

Scala-д гараар код бичих шаардлагагүйгээр багц болон урсгал мэдээлэл боловсруулахад зориулагдсан бага кодтой хэрэгслийн хэрэглээний хүрээ үүгээр дуусахгүй.

Datalake-г хөгжүүлэхэд бага код ашиглах нь бидний хувьд аль хэдийн стандарт болсон. Hadoop стек дээр суурилсан шийдлүүд нь RDBMS дээр суурилсан сонгодог DWH-ийн хөгжлийн замыг дагаж мөрддөг гэж бид хэлж чадна. Hadoop стек дээрх бага кодтой хэрэгслүүд нь өгөгдөл боловсруулах ажил болон эцсийн BI интерфейсийг бий болгох ажлыг хоёуланг нь шийдэж чадна. Нэмж дурдахад BI гэдэг нь зөвхөн өгөгдлийг дүрслэхээс гадна бизнесийн хэрэглэгчдийн засварлах гэсэн утгатай болохыг тэмдэглэх нь зүйтэй. Бид санхүүгийн салбарт аналитик платформ байгуулахдаа энэ функцийг ихэвчлэн ашигладаг.

Аналитик платформд бага код хэрэглэх

Бусад зүйлсийн дотор бага код, ялангуяа Датаграм ашиглан атомын шинж чанартай өгөгдлийн урсгалын объектуудын гарал үүслийг бие даасан талбар (удам угсаа) хүртэл хянах асуудлыг шийдэх боломжтой. Үүнийг хийхийн тулд бага кодтой хэрэгсэл нь Apache Atlas болон Cloudera Navigator-тай интерфейсийг хэрэгжүүлдэг. Үндсэндээ, хөгжүүлэгч нь Атлас толь бичигт объектын багцыг бүртгэж, зураглал хийхдээ бүртгэгдсэн объектуудыг лавлах хэрэгтэй. Өгөгдлийн гарал үүслийг хянах эсвэл объектын хамаарлыг шинжлэх механизм нь тооцооллын алгоритмыг сайжруулах шаардлагатай үед маш их цаг хэмнэдэг. Жишээлбэл, санхүүгийн тайлан гаргахдаа энэ функц нь хууль тогтоомжийн өөрчлөлтийн үеийг илүү тохь тухтай даван туулах боломжийг олгодог. Эцсийн эцэст бид нарийвчилсан давхаргын объектуудын контекст дэх хэлбэр хоорондын хамаарлыг илүү сайн ойлгох тусам "гэнэтийн" согогтой тулгарч, дахин боловсруулалтын тоог багасгах болно.

Аналитик платформд бага код хэрэглэх

Өгөгдлийн чанар ба бага код

Mediascope төсөл дээр бага кодтой хэрэглүүрийн хэрэгжүүлсэн өөр нэг ажил бол Өгөгдлийн чанарын ангийн даалгавар байв. Судалгааны компаний төслийн өгөгдөл шалгах дамжуулах хоолойг хэрэгжүүлэх нэг онцлог шинж чанар нь үндсэн мэдээллийн тооцооллын урсгалын гүйцэтгэл, хурдад нөлөөлөл багатай байсан. Өгөгдлийн баталгаажуулалтын бие даасан урсгалыг зохион байгуулахын тулд аль хэдийн танил болсон Apache Airflow-ийг ашигласан. Мэдээлэл үйлдвэрлэх алхам бүр бэлэн болсон тул DQ дамжуулах хоолойн салангид хэсгийг зэрэгцүүлэн эхлүүлэв.

Аналитик платформ дээр өгөгдлийн чанарыг бий болсон цагаас нь хянах нь сайн туршлага гэж тооцогддог. Мета өгөгдлийн талаархи мэдээлэлтэй бол бид мэдээлэл анхдагч давхаргад орохоос эхлээд үндсэн нөхцөлтэй нийцэж байгаа эсэхийг шалгаж болно - null биш, хязгаарлалт, гадаад түлхүүр. Энэ функцийг Datagram дахь өгөгдлийн чанарын гэр бүлийн автоматаар үүсгэсэн зураглал дээр үндэслэн хэрэгжүүлдэг. Энэ тохиолдолд код үүсгэх нь мөн загварын мета өгөгдөл дээр суурилдаг. Mediascope төсөл дээр интерфэйсийг Enterprise Architect бүтээгдэхүүний мета өгөгдөлтэй хийсэн.

Бага кодтой хэрэгслийг Enterprise Architect-тэй хослуулснаар дараах шалгалтуудыг автоматаар үүсгэсэн.

  • "Тэгээгүй" хувиргагчтай талбарт "цэг" утгууд байгаа эсэхийг шалгах;
  • Үндсэн түлхүүрийн хуулбар байгаа эсэхийг шалгах;
  • Байгууллагын гадаад түлхүүрийг шалгах;
  • Олон талбар дээр үндэслэн мөрийн өвөрмөц байдлыг шалгаж байна.

Өгөгдлийн хүртээмж, найдвартай байдлыг шалгахын тулд Zeppelin-ийн шинжээчдийн бэлтгэсэн гадаад Spark SQL шалгах кодыг оруулдаг Scala Expression-ийн тусламжтайгаар зураглалыг хийсэн.

Аналитик платформд бага код хэрэглэх

Мэдээжийн хэрэг, автомат шалгалтыг аажмаар хийх ёстой. Тайлбарласан төслийн хүрээнд дараахь алхмуудыг хийж гүйцэтгэв.

  • DQ Zeppelin дэвтэрт хэрэгжсэн;
  • DQ зураглалд суурилуулсан;
  • Тусдаа аж ахуйн нэгжийн бүхэл бүтэн багц шалгалтыг агуулсан тусдаа их хэмжээний зураглал хэлбэрээр DQ;
  • Мета өгөгдөл болон бизнесийн шалгалтын талаарх мэдээллийг оролт болгон хүлээн авдаг бүх нийтийн параметржүүлсэн DQ зураглал.

Магадгүй параметржүүлсэн шалгах үйлчилгээг бий болгох гол давуу тал нь үйлдвэрлэлийн орчинд функцийг хүргэх хугацааг багасгах явдал юм. Шинэ чанарын шалгалтууд нь хөгжүүлэлт, туршилтын орчинд кодыг шууд бусаар дамжуулах сонгодог хэв маягийг тойрч гарах боломжтой.

  • Загварыг EA-д өөрчлөх үед бүх мета өгөгдлийн шалгалтууд автоматаар үүсдэг;
  • Өгөгдлийн хүртээмжийн шалгалтыг (тодорхой хугацаанд ямар нэгэн өгөгдөл байгаа эсэхийг тодорхойлох) объектын контекст дэх дараагийн өгөгдлийн харагдах хугацааг хадгалдаг лавлах дээр үндэслэн үүсгэж болно;
  • Бизнесийн мэдээллийн баталгаажуулалтын шалгалтыг шинжээчид Zeppelin дэвтэрт хийдэг. Тэндээс тэдгээрийг үйлдвэрлэлийн орчин дахь DQ модулийн тохиргооны хүснэгтүүд рүү шууд илгээдэг.

Скриптийг үйлдвэрлэлд шууд хүргэх эрсдэл байхгүй. Синтакс алдаатай байсан ч гэсэн бидэнд заналхийлж буй дээд тал нь нэг шалгалтыг хийхгүй байх явдал юм, учир нь өгөгдлийн тооцооны урсгал болон чанарын шалгалтын эхлүүлэх урсгал нь бие биенээсээ тусгаарлагдсан байдаг.

Үндсэндээ DQ үйлчилгээ нь үйлдвэрлэлийн орчинд байнга ажиллаж байгаа бөгөөд дараагийн өгөгдөл гарч ирэх үед ажлаа эхлүүлэхэд бэлэн байна.

Оронд дүгнэлтийг

Бага код ашиглахын давуу тал нь ойлгомжтой. Хөгжүүлэгчид програмыг эхнээс нь хөгжүүлэх шаардлагагүй. Нэмэлт ажлуудаас чөлөөлөгдсөн програмист үр дүнг илүү хурдан гаргадаг. Хурд нь эргээд оновчлолын асуудлыг шийдвэрлэх нэмэлт цагийг чөлөөлдөг. Тиймээс, энэ тохиолдолд та илүү сайн, хурдан шийдэлд найдаж болно.

Мэдээжийн хэрэг, бага код нь өвчин эмгэг биш бөгөөд ид шид нь өөрөө тохиолдохгүй:

  • Бага кодтой салбар нь "илүү хүчирхэгжих" үе шатыг туулж байгаа бөгөөд үйлдвэрлэлийн нэгдсэн стандарт хараахан гараагүй байна;
  • Олон тооны бага кодтой шийдлүүд үнэ төлбөргүй байдаггүй бөгөөд тэдгээрийг худалдан авах нь ухамсартай алхам байх ёстой бөгөөд үүнийг ашиглах нь санхүүгийн үр өгөөжид бүрэн итгэлтэй байх ёстой;
  • Олон тооны бага кодтой шийдлүүд GIT/SVN-тэй үргэлж сайн ажилладаггүй. Эсвэл үүсгэсэн код нуугдсан тохиолдолд тэдгээрийг ашиглахад тохиромжгүй;
  • Архитектурыг өргөжүүлэхдээ бага кодтой шийдлийг боловсронгуй болгох шаардлагатай байж магадгүй бөгөөд энэ нь эргээд бага кодтой шийдлийг нийлүүлэгчид "хавсралт, хамаарал" -ын нөлөөг өдөөдөг.
  • Хангалттай түвшний аюулгүй байдлыг хангах боломжтой боловч энэ нь маш их хөдөлмөр шаарддаг бөгөөд бага кодтой системийн хөдөлгүүрт хэрэгжүүлэхэд хэцүү байдаг. Бага кодтой платформуудыг зөвхөн ашиглахаас ашиг олох зарчмаар сонгох ёсгүй. Сонгохдоо хандалтыг хянах, таних өгөгдлийг байгууллагын мэдээллийн технологийн бүх түвшний түвшинд шилжүүлэх / нэмэгдүүлэх функц байгаа эсэх талаар асуулт асуух нь зүйтэй.

Аналитик платформд бага код хэрэглэх

Гэсэн хэдий ч, хэрэв сонгосон системийн бүх дутагдал нь танд мэдэгдэж байгаа бөгөөд түүний ашиглалтын ашиг тус нь давамгайлж байгаа бол айдасгүйгээр жижиг код руу шилжинэ үү. Түүгээр ч барахгүй аливаа хувьсал зайлшгүй байдаг шиг түүнд шилжих нь зайлшгүй юм.

Хэрэв бага кодтой платформ дээрх нэг хөгжүүлэгч өөрийн ажлыг бага кодгүй хоёр хөгжүүлэгчээс илүү хурдан хийдэг бол энэ нь компанид бүх талаараа эхлэлийг тавина. Бага кодтой шийдэлд нэвтрэх босго нь "уламжлалт" технологиос доогуур байгаа нь боловсон хүчний хомсдолын асуудалд эерэгээр нөлөөлж байна. Бага кодтой хэрэгслүүдийг ашиглахдаа функциональ багууд хоорондын харилцан үйлчлэлийг хурдасгаж, мэдээллийн шинжлэх ухааны судалгааны сонгосон зам зөв эсэх талаар илүү хурдан шийдвэр гаргах боломжтой. Үйлдвэрлэсэн шийдлүүдийг техникийн бус мэргэжилтнүүд (ялангуяа бизнесийн хэрэглэгчид) ойлгох боломжтой тул доод түвшний платформууд нь байгууллагын дижитал өөрчлөлтийг хөдөлгөж чадна.

Хэрэв танд эцсийн хугацаа, ачаалал ихтэй бизнесийн логик, технологийн туршлага дутмаг, зах зээлд гарах цагаа хурдасгах шаардлагатай бол бага код нь таны хэрэгцээг хангах нэг арга юм.

Уламжлалт хөгжлийн хэрэгслүүдийн ач холбогдлыг үгүйсгэх аргагүй ч ихэнх тохиолдолд бага кодтой шийдлүүдийг ашиглах нь шийдэж буй ажлуудын үр ашгийг нэмэгдүүлэх хамгийн сайн арга юм.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх