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 –
- PySparki koodi silumine kohapeal ilma AWS-i arendaja lõpp-punkte kasutamata.
- Suhtlemine AWS-i teenustega kohapeal
Mõlemat probleemi saab lahendada Dockeri piltide abil.
- 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/
- 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.
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
- Looge DockerFile
https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-dockerfile
- Kasutage installitavate pakettidega nõuete faili
- 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
- 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:
- Liimi lõpp-punkt: https://docs.aws.amazon.com/glue/latest/dg/dev-endpoint.html
Docker: https://docs.docker.com/get-docker/ - PyCharm: https://www.jetbrains.com/pycharm/
- PyCharmi kaugtõlk: https://www.jetbrains.com/help/pycharm/using-docker-compose-as-a-remote-interpreter.html
- LocalStack: https://localstack.cloud
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
- "
- &
- kättesaadavus
- Materjal: BPA ja flataatide vaba plastik
- Amazon
- analytics
- API
- API-liidesed
- rakendused
- artikkel
- kättesaadavus
- AWS
- ehitama
- Ehitus
- väljakutse
- kliendid
- Cloud
- pilverakendused
- kood
- ühine
- Konteinerid
- loomine
- volikiri
- andmed
- Andmete analüüs
- andmeteadus
- andmekogus
- Pakkumised
- sügav õpe
- dev
- & Tarkvaraarendus
- digitaalne
- Juhataja
- laevalaadija
- Lõpp-punkt
- insener
- Inseneriteadus
- Inseneride
- keskkond
- jms
- Paindlikkus
- Keskenduma
- formaat
- Raamistik
- GitHub
- hea
- GPU
- siin
- Kuidas
- HTTPS
- pilt
- Infrastruktuur
- IT
- Võti
- suur
- viima
- Õppida
- õppimine
- kohalik
- kohapeal
- ML
- järelevalve
- pakkuma
- Internetis
- Muu
- Isikupärastamine
- Keskses
- hind
- hinnapoliitika
- probleemi lahendamine
- Python
- Nõuded
- jooks
- jooksmine
- liivakast
- teadus
- teadlased
- Serverita
- Teenused
- kehtestamine
- tarkvara
- Tarkvara insener
- Lahendused
- LAHENDAGE
- algus
- salvestada
- Lood
- Tehniline
- test
- Testimine
- aeg
- ülemine
- Kasutajad
- Ladu
- X
- aastat