ETL-i torujuhtmete arendamine ja testimine AWS-i jaoks kohapeal

Allikasõlm: 997665

ETL-i torujuhtmete arendamine ja testimine AWS-i jaoks kohapeal

Tavaliselt tehakse ETL-i torujuhtmete arendus ja testimine reaalses keskkonnas/klastrites, mille seadistamine ja hooldus on aeganõudev. See artikkel keskendub Dockeri ja LocalStacki abiga ETL-i torujuhtmete kohalikule arendamisele ja testimisele. Lahendus annab paindlikkuse testimiseks kohalikus keskkonnas ilma pilves teenuseid seadistamata.


By Subhash Sreenivasachar, Epsiloni tarkvarainsener tehniline juht

Sissejuhatus

 
 
AWS mängib keskset rolli inseneride ja andmeteadlaste abistamisel, et keskenduda lahenduste loomisele ja probleemide lahendamisele, muretsemata infrastruktuuri seadistamise vajaduse pärast. Serverivaba ja tasulise hinnakujunduse abil võimaldab AWS hõlpsasti teenuseid lennult luua.

Andmeinsenerid kasutavad AWS-liimi laialdaselt serverita ETL-i torujuhtmete ehitamiseks. PySpark on üks levinumaid arenduseks kasutatavaid tehnilisi pinu. Vaatamata teenuste kättesaadavusele tuleb siiski lahendada teatud väljakutseid.

Koodi silumine AWS-keskkonnas, olgu see siis ETL-skripti (PySpark) või mõne muu teenuse jaoks, on väljakutse.

  • AWS-i teenuse kasutamise pidev jälgimine on kuluteguri kontrolli all hoidmiseks võtmetähtsusega
  • AWS pakub küll Dev Endpointi koos kõigi installitud sädeteekidega, kuid hinda arvestades pole see elujõuline suurte arendusmeeskondade jaoks
  • AWS-i teenuste juurdepääsetavus võib olla piiratud teatud kasutajate jaoks

Lahendus

 
 
AWS-i lahendusi saab arendada, testida kohalikus keskkonnas, muretsemata juurdepääsetavuse või kuluteguri pärast. Selle artikli kaudu käsitleme kahte probleemi –

  1. PySparki koodi silumine kohapeal ilma AWS-i arendaja lõpp-punkte kasutamata.
  2. Suhtlemine AWS-i teenustega kohapeal

Mõlemat probleemi saab lahendada Dockeri piltide abil.

  1. Esiteks kaotame vajaduse AWS-i keskkonnas serveri järele ja selle asemel toimib masinas töötav dokkimispilt koodi käivitamise keskkonnana.

AWS pakub liivakasti kujutist, mida saab kasutada PySparki skriptide jaoks. Dockeri kujutist saab seadistada PySparki koodi käivitamiseks. https://aws.amazon.com/blogs/big-data/developing-aws-glue-etl-jobs-locally-using-a-container/
 

  1. Kuna koodi käivitamiseks on saadaval dokkimismasin, on ETL-i konveieri ehitamise ajal failide salvestamiseks (lugemiseks/kirjutamiseks) vaja teenust nagu S3.

Koostoimeid S3-ga saab asendada LocalStack mis pakub pilverakenduste arendamiseks hõlpsasti kasutatavat testimis-/pilkavat raamistikku. See loob teie kohalikus masinas testimiskeskkonna, mis pakub samu funktsioone ja API-sid nagu tõeline AWS-i pilvekeskkond.

Päise

Siiani käsitleb artikkel ETL torujuhtme ehitamist ja saadaolevate teenuste kasutamist. Sarnast lähenemist saab aga kohandada igale kasutusjuhtumile, töötades AWS-teenustega, nagu SNS, SQS, CloudFormation, Lambda funktsioonid jne.

Lähenemine

  • Kasutage kaugtõlgina dokkekonteinereid
  • Käivitage konteinerites PySparki seanss
  • Pöörake S3 teenust lokaalselt, kasutades LocalStacki
  • Kasutage PySparki koodi, et lugeda ja kirjutada LocalStackis töötavast S3 ämbrist

Eeltingimused

 
Teie masinale tuleb paigaldada järgmised tööriistad

  • laevalaadija
  • PyCharm Professional/ VisualStudio kood

Seade

  • Dockeri kujutiste allalaadimine või tõmbamine (docker pull )
    • libs:glue_libs_1.0.0_image_01
    • localstack/localstack
  • Dockeri konteinereid saab PyCharmi professionaalses versioonis kasutada kaugtõlkidena.

Täitmine

 
Kui Docker on installitud ja pildid on kohalikku masinasse tõmmatud, alustage PyCharmi seadistamist konteinerite käivitamiseks konfiguratsioonidega.

  • Looge fail docker-compose.yml

https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-docker-compose-yml

  • Looge DockerFile

https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-dockerfile

  • Kasutage installitavate pakettidega nõuete faili

https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-requirements-txt
 

  • Pythoni kaugtõlgi seadistamine
    • Seadistage Pythoni tõlk, kasutades dockeri koostamise faili.
    • Valige PyCharm Docker Compose'i seadetes liimiteenus.
    • Dockeri koostamise fail loob ja käitab mõlema pildi konteinerid
    • LocalStack töötab vaikimisi pordil 4566 ja S3 teenus on sellel lubatud

kood

  • Impordimiseks nõutavad teegid

https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-imports

  • Lisage fail LocalStackis töötavasse S3 ämbrisse

https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-add_to_bucket
http://host.docker.internal:4566 on S3, mis töötab kohapeal dockeri konteineris

  • Seadistage PySparki seanss S3-st lugemiseks

https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-create_pyspark_session

  • PySparki seanss loob ühenduse S3-ga pakutavate näidismandaatide kaudu
  • Saate S3-st otse lugeda, kasutades loodud PySparki seanssi

https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-read_from_s3

  • Lõpuks on võimalik S3-le kirjutada mis tahes eelistatud vormingus

https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-write_to_s3

Kui ülalnimetatud sammud on täidetud, saame testimiseks luua näidis-csv-faili näidisandmetega ja peaksite olema hea

  • Lisage fail S3-le (mis töötab LocalStackis)
  • Loe alates S3
  • Kirjuta tagasi S3-le parkettina

Peaksite saama käivitada .py-faili, et käivitada ja luuakse PySparki seanss, mis suudab lugeda S3 ämbrist, mis töötab LocalStack API abil kohapeal.

Lisaks saate kontrollida, kas LocalStack töötab http://localhost:4566/health

LocalStack annab teile võimaluse käitada käske ka AWS CLI abil.

Järeldus

 
 
Dockeri ja Localstacki kasutamine pakub kiiret ja lihtsat viisi Pysparki koodi käivitamiseks, konteinerite silumiseks ja lokaalselt töötavale S3-le kirjutamiseks. Seda kõike ilma ühegi AWS-teenusega ühendust loomata.

 
viited:

 
Bio: Subhash Sreenivasachar on Epsilon Digital Experience'i meeskonna juhtiv tarkvarainsener, kes ehitab insenerilahendusi, et lahendada andmeteaduse probleeme, mis on konkreetselt isikupärastatud, ja aidata suurendada klientide ROI-d.

Seotud:

Allikas: https://www.kdnuggets.com/2021/08/development-testing-etl-pipelines-aws-locally.html

Ajatempel:

Veel alates KDnuggets