ETL-csővezetékek fejlesztése és tesztelése az AWS-hez helyileg
Az ETL-folyamatok fejlesztése és tesztelése általában valós környezetben/fürtökön történik, ami időigényes telepítést és karbantartást igényel. Ez a cikk az ETL-folyamatok helyi fejlesztésére és tesztelésére összpontosít, a Docker & LocalStack segítségével. A megoldás rugalmasságot biztosít a helyi környezetben végzett teszteléshez anélkül, hogy a felhőben bármiféle szolgáltatást kellene beállítani.
By Subhash Sreenivasachar, szoftvermérnök műszaki vezető az Epsilonnál
Bevezetés
Az AWS kulcsfontosságú szerepet játszik abban, hogy segítse a mérnököket, adattudósokat, hogy a megoldások kidolgozására és a problémamegoldásra összpontosítsanak anélkül, hogy aggódnának az infrastruktúra beállításának szükségessége miatt. A kiszolgáló nélküli és felosztó-kirovó megközelítéssel az árazás során az AWS könnyű szolgáltatást biztosít a menet közben.
Az AWS Glue-t az adatmérnökök széles körben használják szerver nélküli ETL-folyamatok építésére. A PySpark a fejlesztéshez használt egyik általános technológiai verem. A szolgáltatások elérhetősége ellenére azonban vannak bizonyos kihívások, amelyekkel foglalkozni kell.
A kód hibakeresése AWS környezetben, akár ETL-szkripthez (PySpark), akár bármely más szolgáltatáshoz, kihívást jelent.
- Az AWS-szolgáltatás használatának folyamatos nyomon követése kulcsfontosságú a költségtényező ellenőrzés alatt tartásához
- Az AWS kínálja a Dev Endpointot az összes telepített spark könyvtárral, de az árat tekintve nem életképes nagy fejlesztőcsapatok számára.
- Az AWS szolgáltatások elérhetősége lehet korlátozott bizonyos felhasználók számára
Megoldás
Az AWS-megoldások fejleszthetők, tesztelhetők helyi környezetben anélkül, hogy aggódnának a hozzáférhetőség vagy a költségtényező miatt. Ebben a cikkben két problémával foglalkozunk:
- PySpark kód helyi hibakeresése AWS fejlesztői végpontok használata nélkül.
- Helyi kapcsolattartás az AWS-szolgáltatásokkal
Mindkét probléma megoldható Docker képek használatával.
- Először is megszüntetjük az AWS-környezetben lévő kiszolgáló szükségességét, ehelyett a gépen futó docker-képfájl a kód végrehajtásának környezeteként működik.
Az AWS egy sandbox-képet biztosít, amely PySpark-szkriptekhez használható. A Docker lemezkép beállítható a PySpark kód végrehajtására. https://aws.amazon.com/blogs/big-data/developing-aws-glue-etl-jobs-locally-using-a-container/
- Mivel a kód végrehajtásához elérhető dokkológép, szükség van egy olyan szolgáltatásra, mint az S3, hogy tárolja (olvasási/írási) fájlokat az ETL-folyamat építése közben.
Az S3-mal való kölcsönhatások helyettesíthetők LocalStack amely könnyen használható teszt/gúnyos keretrendszert biztosít a felhőalkalmazások fejlesztéséhez. Olyan tesztelési környezetet hoz létre a helyi gépen, amely ugyanazt a funkcionalitást és API-kat kínálja, mint a valódi AWS felhőkörnyezet.
A cikk eddig az ETL-csővezeték kiépítésével és az elérhető szolgáltatások használatával foglalkozik. Hasonló megközelítés azonban bármilyen használati esethez adaptálható az AWS-szolgáltatások, például az SNS, SQS, CloudFormation, Lambda funkciók stb. használata során.
Megközelítés
- Docker konténerek használata távoli tolmácsként
- Futtassa a PySpark munkamenetet a tárolókon
- Pörgesd fel az S3 szolgáltatást helyben a LocalStack segítségével
- Használja PySpark kódot a LocalStack-en futó S3 tárolóból való olvasáshoz és íráshoz
Előfeltétele
A következő eszközöket kell telepíteni a gépére
- Dokkmunkás
- PyCharm Professional/ VisualStudio kód
felépítés
- Docker képek letöltése vagy lehívása (docker pull )
- libs:glue_libs_1.0.0_image_01
- localstack/localstack
- A Docker konténerek távoli tolmácsként használhatók a PyCharm professzionális verziójában.
Implementáció
Ha a Docker telepítve van, és a képeket lehívta a helyi gépre, kezdje el a PyCharm beállítását a tárolók elindításához szükséges konfigurációkkal.
- Hozzon létre egy docker-compose.yml fájlt
- Hozzon létre egy DockerFile-t
https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-dockerfile
- Használja a követelményfájlt a telepítendő csomagokkal
- Állítsa be a Python távoli tolmácsot
- Állítsa be a Python interpretert a docker-compose fájl segítségével.
- A PyCharm Docker Compose beállításaiban válassza a „ragasztószolgáltatás” lehetőséget.
- A Docker-compose fájl mindkét képhez létrehozza és futtatja a tárolókat
- A LocalStack alapértelmezés szerint a 4566-os porton fut, és az S3 szolgáltatás engedélyezve van rajta
Kód
- Az importáláshoz szükséges könyvtárak
https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-imports
- Adjon hozzá egy fájlt a LocalStack-en futó S3 tárolóhoz
https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-add_to_bucket
http://host.docker.internal:4566 az S3 helyileg fut a docker konténerben
- Állítsa be a PySpark munkamenetet az S3-ból való olvasáshoz
- A PySpark-munkamenet a megadott álhitelesítő adatokkal csatlakozik az S3-hoz
- Az S3-ból közvetlenül olvashat a létrehozott PySpark-munkamenet segítségével
https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-read_from_s3
- Végül lehetséges az S3-ba bármilyen kívánt formátumban írni
https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-write_to_s3
A fent említett lépések végrehajtása után létrehozhatunk egy ál-csv-fájlt próbaadatokkal tesztelés céljából.
- Fájl hozzáadása az S3-hoz (amely a LocalStack-en fut)
- Olvasás az S3-ból
- Írd vissza az S3-ra parkettaként
Lehetővé kell tennie a .py fájl futtatását a végrehajtáshoz, és létrejön a PySpark-munkamenet, amely képes olvasni a LocalStack API-val helyileg futó S3 tárolóból.
Ezenkívül azt is ellenőrizheti, hogy a LocalStack fut-e a következővel http://localhost:4566/health
A LocalStack lehetőséget biztosít parancsok futtatására az AWS CLI használatával is.
Következtetés
A Docker & Localstack használata gyors és egyszerű módot biztosít a Pyspark kód futtatására, a konténereken történő hibakeresésre és a helyileg futó S3-ra írásra. Mindezt anélkül, hogy bármilyen AWS-szolgáltatáshoz kellene csatlakoznia.
Referenciák:
- Ragasztó végpont: https://docs.aws.amazon.com/glue/latest/dg/dev-endpoint.html
Dokkmunkás: https://docs.docker.com/get-docker/ - PyCharm: https://www.jetbrains.com/pycharm/
- PyCharm távoli tolmács: https://www.jetbrains.com/help/pycharm/using-docker-compose-as-a-remote-interpreter.html
- LocalStack: https://localstack.cloud
Bio: Subhash Sreenivasachar az Epsilon Digital Experience csapatának vezető szoftvermérnöke, aki olyan mérnöki megoldásokat épít, amelyek az adattudományi problémákat, konkrétan a személyre szabással oldják meg, és segítik az ügyfelek megtérülését.
Kapcsolódó:
Forrás: https://www.kdnuggets.com/2021/08/development-testing-etl-pipelines-aws-locally.html
- "
- &
- megközelíthetőség
- Minden termék
- amazon
- analitika
- api
- API-k
- alkalmazások
- cikkben
- elérhetőség
- AWS
- épít
- Épület
- kihívás
- ügyfél részére
- felhő
- Felhő alkalmazások
- kód
- Közös
- Konténerek
- létrehozása
- Hitelesítő adatok
- dátum
- Adatelemzés
- adat-tudomány
- adattárház
- Ajánlatok
- mély tanulás
- Dev
- Fejlesztés
- digitális
- Igazgató
- Dokkmunkás
- Endpoint
- mérnök
- Mérnöki
- Mérnökök
- Környezet
- stb.
- Rugalmasság
- Összpontosít
- formátum
- Keretrendszer
- GitHub
- jó
- GPU
- itt
- Hogyan
- HTTPS
- kép
- Infrastruktúra
- IT
- Kulcs
- nagy
- vezet
- TANUL
- tanulás
- helyi
- helyileg
- ML
- ellenőrzés
- ajánlat
- online
- Más
- Testreszabás
- döntő
- ár
- árazás
- problémamegoldás
- Piton
- követelmények
- futás
- futás
- sandbox
- Tudomány
- tudósok
- vagy szerver
- Szolgáltatások
- beállítás
- szoftver
- Software Engineer
- Megoldások
- SOLVE
- kezdet
- tárolni
- TÖRTÉNETEK
- Műszaki
- teszt
- Tesztelés
- idő
- felső
- Felhasználók
- Raktár
- X
- év