פיתוח ובדיקה של צינורות ETL עבור AWS מקומית
בדרך כלל, פיתוח ובדיקה של צינורות ETL נעשים על סביבה/אשכולות אמיתיים, שלוקח זמן להתקנה ודורש תחזוקה. מאמר זה מתמקד בפיתוח ובדיקה של צינורות ETL באופן מקומי בעזרת Docker & LocalStack. הפתרון נותן גמישות לבדיקה בסביבה מקומית מבלי להגדיר שירותים כלשהם בענן.
By Subhash Sreenivasachar, מהנדס תוכנה מוביל טכני באפסילון
מבוא
AWS ממלאת תפקיד מרכזי בסיוע למהנדסים, מדעני נתונים להתמקד בבניית פתרונות ובפתרון בעיות מבלי לדאוג מהצורך בהקמת תשתית. עם גישת התמחור ללא שרת ושלם כפי שאתה הולך, AWS מספקת קלות ליצירת שירותים תוך כדי תנועה.
AWS Glue נמצא בשימוש נרחב על ידי מהנדסי נתונים לבניית צינורות ETL ללא שרת. PySpark הוא אחד מחסני הטכנולוגיה הנפוצים המשמשים לפיתוח. עם זאת, למרות הזמינות של השירותים, ישנם אתגרים מסוימים שיש לטפל בהם.
ניפוי קוד בסביבת AWS בין אם עבור סקריפט ETL (PySpark) או כל שירות אחר הוא אתגר.
- ניטור שוטף של השימוש בשירותי AWS הוא המפתח כדי לשמור על גורם העלות בשליטה
- AWS אמנם מציעה Dev Endpoint עם כל ספריות הניצוץ מותקנות, אבל בהתחשב במחיר, זה לא כדאי לשימוש עבור צוותי פיתוח גדולים
- נגישות של שירותי AWS עשויה להיות מוגבל עבור משתמשים מסוימים
פתרון
Solutions for AWS can be developed, tested in local environment without worrying about accessibility or cost factor. Through this article, we are addressing two problems –
- איתור באגים בקוד PySpark באופן מקומי ללא שימוש בנקודות קצה של פיתוח AWS.
- אינטראקציה עם שירותי AWS באופן מקומי
ניתן לפתור את שתי הבעיות באמצעות תמונות Docker.
- ראשית, אנו מבטלים את הצורך בשרת בסביבת AWS ובמקום זאת, תמונת docker הפועלת על המכונה פועלת כסביבה לביצוע הקוד.
AWS מספקת תמונת ארגז חול שניתן להשתמש בה עבור סקריפטים של PySpark. ניתן להגדיר תמונת Docker לביצוע PySpark Code. https://aws.amazon.com/blogs/big-data/developing-aws-glue-etl-jobs-locally-using-a-container/
- עם מכונת docker זמינה לביצוע הקוד, יש צורך בשירות כמו S3 לאחסון (קריאה/כתיבה) קבצים תוך כדי בניית צינור ETL.
ניתן להחליף אינטראקציות עם S3 ב LocalStack המספקת מסגרת בדיקה/לעג קלה לשימוש לפיתוח יישומי ענן. זה יוצר סביבת בדיקה במחשב המקומי שלך שמספקת את אותה פונקציונליות וממשקי API כמו סביבת הענן האמיתית של AWS.
עד כה, המאמר עוסק בבניית צינור ETL ושימוש בשירותים הזמינים. עם זאת, ניתן להתאים גישה דומה לכל מקרה שימוש תוך כדי עבודה עם שירותי AWS כמו SNS, SQS, CloudFormation, פונקציות Lambda וכו'.
גישה
- השתמש במיכלי docker כמתורגמן מרחוק
- הפעל הפעלה של PySpark על הקונטיינרים
- הפוך את שירות S3 באופן מקומי באמצעות LocalStack
- השתמש בקוד PySpark כדי לקרוא ולכתוב מתוך דלי S3 הפועל על LocalStack
מקדים
יש להתקין את הכלים הבאים במחשב שלך
- סַוָר
- PyCharm Professional / VisualStudio Code
התקנה
- הורד או משוך תמונות Docker (Docker pull )
- libs:glue_libs_1.0.0_image_01
- localstack/localstack
- ניתן להשתמש במכולות Docker כמתורגמנים מרחוק בגרסה המקצועית של PyCharm.
יישום
עם Docker מותקן ותמונות נמשכות למחשב המקומי שלך, התחל להגדיר PyCharm עם תצורות להפעלת הקונטיינרים.
- צור קובץ docker-compose.yml
- צור DockerFile
https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-dockerfile
- השתמש בקובץ דרישות עם חבילות להתקנה
- הגדר את המתורגמן המרוחק של Python
- הגדר את מתורגמן Python באמצעות הקובץ docker-compose.
- בחר 'שירות דבק' בהגדרות PyCharm Docker Compose.
- קובץ Docker-compose יוצר ומריץ את הקונטיינרים עבור שתי התמונות
- LocalStack כברירת מחדל פועל על יציאה 4566 ושירות S3 מופעל בו
קופונים
- חובה לייבא ספריות
https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-imports
- הוסף קובץ לדלי S3 הפועל ב-LocalStack
https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-add_to_bucket
http://host.docker.internal:4566 הוא ה-S3 הפועל באופן מקומי בתוך קונטיינר Docker
- הגדר את הפעלת PySpark לקריאה מ-S3
- הפעלת PySpark מתחבר ל-S3 באמצעות אישורים מדומים שסופקו
- אתה יכול לקרוא מ-S3 ישירות באמצעות הפעלת PySpark שנוצרה
https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-read_from_s3
- לבסוף, אפשר לכתוב ל-S3 בכל פורמט מועדף
https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-write_to_s3
לאחר ביצוע השלבים האמורים לעיל, נוכל ליצור קובץ csv דמה עם נתונים מדומים לבדיקה ואתה אמור להיות טוב
- הוסף קובץ ל-S3 (שפועל על LocalStack)
- קרא מ-S3
- כתוב בחזרה ל-S3 כפרקט
אתה אמור להיות מסוגל להריץ את קובץ ה-.py לביצוע ותיווצר הפעלה של PySpark שיכולה לקרוא מדלי S3 שפועל באופן מקומי באמצעות LocalStack API.
בנוסף, אתה יכול גם לבדוק אם LocalStack פועל עם http://localhost:4566/health
LocalStack מספק לך יכולת להפעיל פקודות גם באמצעות AWS CLI.
סיכום
השימוש ב-Docker & Localstack מספק דרך מהירה וקלה להפעיל את קוד Pyspark, לבצע ניפוי באגים בקונטיינרים ולכתוב ל-S3 שפועל באופן מקומי. כל זאת מבלי להתחבר לשירות AWS כלשהו.
הפניות:
- נקודת קצה של דבק: https://docs.aws.amazon.com/glue/latest/dg/dev-endpoint.html
דוקר: https://docs.docker.com/get-docker/ - PyCharm: https://www.jetbrains.com/pycharm/
- מתורגמן מרחוק PyCharm: https://www.jetbrains.com/help/pycharm/using-docker-compose-as-a-remote-interpreter.html
- LocalStack: https://localstack.cloud
Bio you Subhash Sreenivasachar הוא מהנדס תוכנה מוביל בצוות Epsilon Digital Experience, בונה פתרונות הנדסיים לפתרון בעיות במדעי הנתונים, במיוחד התאמה אישית, ועוזר להניע את החזר ה-ROI עבור לקוחות.
מידע נוסף:
הסיפורים הגדולים ביותר ב 30 יום | |||||
---|---|---|---|---|---|
|
|
מקור: https://www.kdnuggets.com/2021/08/development-testing-etl-pipelines-aws-locally.html
- "
- &
- נגישות
- תעשיות
- אמזון בעברית
- ניתוח
- API
- ממשקי API
- יישומים
- מאמר
- זמינות
- AWS
- לִבנוֹת
- בִּניָן
- לאתגר
- לקוחות
- ענן
- ענן יישומים
- קוד
- Common
- מכולות
- יוצרים
- אישורים
- נתונים
- ניתוח נתונים
- מדע נתונים
- מחסן נתונים
- דילים
- למידה עמוקה
- dev
- צעצועי התפתחות
- דיגיטלי
- מְנַהֵל
- סַוָר
- נקודת קצה
- מהנדס
- הנדסה
- מהנדסים
- סביבה
- וכו '
- גמישות
- להתמקד
- פוּרמָט
- מסגרת
- GitHub
- טוב
- GPUs
- כאן
- איך
- HTTPS
- תמונה
- תשתית
- IT
- מפתח
- גָדוֹל
- עוֹפֶרֶת
- לִלמוֹד
- למידה
- לינקדין
- מקומי
- באופן מקומי
- ML
- ניטור
- הַצָעָה
- באינטרנט
- אחר
- התאמה אישית
- מכריע
- מחיר
- תמחור
- פתרון בעיות
- פיתון
- דרישות
- הפעלה
- ריצה
- ארגז חול
- מדע
- מדענים
- ללא שרת
- שירותים
- הצבה
- תוכנה
- מהנדס תוכנה
- פתרונות
- לפתור
- התחלה
- חנות
- סיפורים
- טכני
- מבחן
- בדיקות
- זמן
- חלק עליון
- משתמשים
- מחסן
- X
- שנים