ETL -putkilinjojen kehittäminen ja testaus AWS: lle paikallisesti

Lähdesolmu: 997665

ETL -putkilinjojen kehittäminen ja testaus AWS: lle paikallisesti

Tunnisteet: AWS, Tietotekniikka, ETL, Putki

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 -

  1. PySpark-koodin virheenkorjaus paikallisesti ilman AWS-kehittäjäpäätepisteitä.
  2. Vuorovaikutus AWS-palvelujen kanssa paikallisesti

Molemmat ongelmat voidaan ratkaista käyttämällä Docker-kuvia.

  1. 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/
 

  1. 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ö.

Ylätunniste

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

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

  • Luo Docker-tiedosto

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

  • Käytä vaatimustiedostoa asennettavien pakettien kanssa

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

  • 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

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

  • 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:

 
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

Aikaleima:

Lisää aiheesta KDnuggets