ETL -putkilinjojen kehittäminen ja testaus AWS: lle paikallisesti
Tyypillisesti ETL -putkilinjojen kehittäminen ja testaaminen tapahtuu todellisessa ympäristössä/klustereissa, mikä on aikaa vievää asennusta ja vaatii huoltoa. Tämä artikkeli keskittyy ETL -putkilinjojen kehittämiseen ja testaamiseen paikallisesti Docker & LocalStackin avulla. Ratkaisu tarjoaa joustavuutta testata paikallisessa ympäristössä ilman, että pilveen asennetaan palveluita.
By Subhash Sreenivasachar, ohjelmistosuunnittelija tekninen johtaja Epsilonissa
esittely
AWS:llä on keskeinen rooli auttaessaan insinöörejä ja tietotieteilijöitä keskittymään ratkaisujen rakentamiseen ja ongelmanratkaisuun huolehtimatta infrastruktuurin asennuksen tarpeesta. Palvelimeton & pay-as-you-go lähestymistapa hinnoitteluun tarjoaa AWS:n helpon palvelujen luomisen lennossa.
Tietosuunnittelijat käyttävät laajalti AWS Glue -liimaa palvelimettomien ETL-putkien rakentamiseen. PySpark on yksi yleisimmistä kehityksessä käytetyistä teknisistä pinoista. Palvelujen saatavuudesta huolimatta tiettyjä haasteita on kuitenkin ratkaistava.
Virheenkorjaus AWS-ympäristössä, olipa kyseessä sitten ETL-skripti (PySpark) tai jokin muu palvelu, on haaste.
- AWS-palvelun käytön jatkuva seuranta on avainasemassa kustannustekijän hallinnassa
- AWS tarjoaa Dev Endpointin kaikkine kipinäkirjastoineen, mutta hinta huomioon ottaen se ei ole kannattava käytettäväksi suurille kehitystiimeille.
- AWS-palvelujen saavutettavuus voi olla rajoitettu tietyille käyttäjille
Ratkaisu
AWS-ratkaisuja voidaan kehittää ja testata paikallisessa ympäristössä huolehtimatta saavutettavuudesta tai kustannustekijöistä. Tässä artikkelissa käsittelemme kahta ongelmaa -
- PySpark-koodin virheenkorjaus paikallisesti ilman AWS-kehittäjäpäätepisteitä.
- Vuorovaikutus AWS-palvelujen kanssa paikallisesti
Molemmat ongelmat voidaan ratkaista käyttämällä Docker-kuvia.
- Ensinnäkin poistamme palvelimen tarpeen AWS-ympäristössä, ja sen sijaan koneessa toimiva Docker-kuva toimii ympäristönä koodin suorittamiseen.
AWS tarjoaa hiekkalaatikkokuvan, jota voidaan käyttää PySpark-skripteissä. Docker-kuva voidaan määrittää suorittamaan PySpark-koodi. https://aws.amazon.com/blogs/big-data/developing-aws-glue-etl-jobs-locally-using-a-container/
- Koska telakointikone on käytettävissä koodin suorittamiseen, tarvitaan S3:n kaltainen palvelu tiedostojen tallentamiseen (luku/kirjoitus) samalla kun rakennetaan ETL-putkia.
Vuorovaikutus S3:n kanssa voidaan korvata LocalStack joka tarjoaa helppokäyttöisen testi-/pilkkakehyksen pilvisovellusten kehittämiseen. Se luo paikalliselle koneellesi testausympäristön, joka tarjoaa samat toiminnot ja API:t kuin todellinen AWS-pilviympäristö.
Toistaiseksi artikkeli käsittelee ETL-putkilinjan rakentamista ja saatavilla olevien palvelujen käyttöä. Samanlaista lähestymistapaa voidaan kuitenkin mukauttaa mihin tahansa käyttötapaukseen työskennellessäsi AWS-palveluiden, kuten SNS, SQS, CloudFormation, Lambda-toimintojen jne., kanssa.
Lähestymistapa
- Käytä telakointikontteja etätulkkina
- Suorita PySpark-istunto säilöissä
- Pyöritä S3-palvelu paikallisesti LocalStackilla
- PySpark-koodin avulla voit lukea ja kirjoittaa LocalStackissa käynnissä olevasta S3-säilystä
Edellytykset
Seuraavat työkalut on asennettava koneellesi
- Satamatyöläinen
- PyCharm Professional/ VisualStudio Code
Perustaa
- Lataa tai vedä telakointikuvia (docker pull )
- libs:glue_libs_1.0.0_image_01
- localstack/localstack
- Docker-konttia voidaan käyttää etätulkkina PyCharm Professional -versiossa.
Täytäntöönpano
Kun Docker on asennettu ja kuvat on vedetty paikalliselle koneellesi, aloita PyCharm-asetusten määrittäminen säilöjen käynnistämiseksi.
- Luo docker-compose.yml-tiedosto
- Luo Docker-tiedosto
https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-dockerfile
- Käytä vaatimustiedostoa asennettavien pakettien kanssa
- Asenna Python-etätulkki
- Asenna Python-tulkki docker-compose-tiedoston avulla.
- Valitse `glue-service' PyCharm Docker Compose -asetuksista.
- Docker-compose-tiedosto luo ja ajaa säilöt molemmille kuville
- LocalStack toimii oletusarvoisesti portissa 4566 ja S3-palvelu on käytössä siinä
Koodi
- Vaaditut kirjastot on tuotava
https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-imports
- Lisää tiedosto S3-säilöyn, joka toimii LocalStackissa
https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-add_to_bucket
http://host.docker.internal:4566 on S3, joka toimii paikallisesti docker-säiliön sisällä
- Aseta PySpark-istunto lukemaan S3:sta
- PySpark-istunto muodostaa yhteyden S3:een toimitettujen valetunnuksien avulla
- Voit lukea S3:sta suoraan luodun PySpark-istunnon avulla
https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-read_from_s3
- Lopuksi on mahdollista kirjoittaa S3:een missä tahansa halutussa muodossa
https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-write_to_s3
Kun edellä mainitut vaiheet on suoritettu, voimme luoda vale-csv-tiedoston testausta varten ja sinun pitäisi olla hyvä
- Lisää tiedosto S3:een (joka on käynnissä LocalStackissa)
- Lue S3:sta
- Kirjoita takaisin S3:lle parketiksi
Sinun pitäisi pystyä suorittamaan .py-tiedosto ja luodaan PySpark-istunto, joka pystyy lukemaan S3-säilöstä, joka toimii paikallisesti LocalStack API:n avulla.
Lisäksi voit myös tarkistaa, onko LocalStack käytössä http://localhost:4566/health
LocalStack tarjoaa sinulle mahdollisuuden suorittaa komentoja myös AWS CLI:n avulla.
Yhteenveto
Docker & Localstackin käyttö tarjoaa nopean ja helpon tavan suorittaa Pyspark-koodia, tehdä virheenkorjausta säilöistä ja kirjoittaa S3:een, joka toimii paikallisesti. Kaikki tämä ilman, että sinun tarvitsee muodostaa yhteyttä mihinkään AWS-palveluun.
Viitteet:
- Liiman päätepiste: https://docs.aws.amazon.com/glue/latest/dg/dev-endpoint.html
Satamatyöläinen: https://docs.docker.com/get-docker/ - PyCharm: https://www.jetbrains.com/pycharm/
- PyCharm Remote tulkki: 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 -tiimin johtava ohjelmistosuunnittelija, joka rakentaa teknisiä ratkaisuja datatieteellisten ongelmien ratkaisemiseen, erityisesti personointiin, ja auttaa parantamaan asiakkaiden sijoitetun pääoman tuottoprosenttia.
Related:
Lähde: https://www.kdnuggets.com/2021/08/development-testing-etl-pipelines-aws-locally.html
- "
- &
- saavutettavuus
- Kaikki
- Amazon
- Analytics
- api
- API
- sovellukset
- artikkeli
- saatavuus
- AWS
- rakentaa
- Rakentaminen
- haaste
- asiakkaat
- pilvi
- pilvisovellukset
- koodi
- Yhteinen
- Kontit
- Luominen
- Valtakirja
- tiedot
- Data Analytics
- tietojenkäsittely
- tietovarasto
- Tarjoukset
- syvä oppiminen
- dev
- Kehitys
- digitaalinen
- Johtaja
- Satamatyöläinen
- päätepiste
- insinööri
- Tekniikka
- Engineers
- ympäristö
- jne.
- Joustavuus
- Keskittää
- muoto
- Puitteet
- GitHub
- hyvä
- GPU
- tätä
- Miten
- HTTPS
- kuva
- Infrastruktuuri
- IT
- avain
- suuri
- johtaa
- OPPIA
- oppiminen
- paikallinen
- paikallisesti
- ML
- seuranta
- kampanja
- verkossa
- Muut
- Personointi
- keskeinen
- hinta
- hinnoittelu
- ongelmanratkaisu
- Python
- vaatimukset
- ajaa
- juoksu
- hiekkalaatikko
- tiede
- tutkijat
- serverless
- Palvelut
- asetus
- Tuotteemme
- Software Engineer
- Ratkaisumme
- SOLVE
- Alkaa
- verkkokaupasta
- tarinat
- Tekninen
- testi
- Testaus
- aika
- ylin
- Käyttäjät
- Varasto
- X
- vuotta