Ανάπτυξη & Δοκιμή Αγωγών ETL για AWS Τοπικά

Κόμβος πηγής: 997665

Ανάπτυξη & Δοκιμή Αγωγών ETL για AWS Τοπικά

Συνήθως, η ανάπτυξη και η δοκιμή των αγωγών ETL γίνονται σε πραγματικό περιβάλλον/συστάδες που είναι χρονοβόρο για την εγκατάσταση και απαιτεί συντήρηση. Αυτό το άρθρο εστιάζει στην ανάπτυξη και τη δοκιμή αγωγών ETL τοπικά με τη βοήθεια του Docker & LocalStack. Η λύση παρέχει ευελιξία για δοκιμή σε τοπικό περιβάλλον χωρίς εγκατάσταση υπηρεσιών στο cloud.


By Subhash Sreenivasachar, Τεχνικός Υπεύθυνος Μηχανικός Λογισμικού στο Epsilon

Εισαγωγή

 
 
Το AWS διαδραματίζει κεντρικό ρόλο βοηθώντας τους μηχανικούς, τους επιστήμονες δεδομένων να επικεντρωθούν στην κατασκευή λύσεων και στην επίλυση προβλημάτων χωρίς να ανησυχούν για την ανάγκη εγκατάστασης υποδομής. Με την προσέγγιση τιμολόγησης χωρίς διακομιστή και πληρωμής, το AWS παρέχει ευκολία στη δημιουργία υπηρεσιών εν κινήσει.

Το AWS Glue χρησιμοποιείται ευρέως από τους Data Engineers για την κατασκευή αγωγών ETL χωρίς διακομιστή. Το PySpark είναι ένα από τα κοινά tech-stack που χρησιμοποιούνται για ανάπτυξη. Ωστόσο, παρά τη διαθεσιμότητα των υπηρεσιών, υπάρχουν ορισμένες προκλήσεις που πρέπει να αντιμετωπιστούν.

Ο εντοπισμός σφαλμάτων κώδικα σε περιβάλλον AWS είτε για σενάριο ETL (PySpark) είτε για οποιαδήποτε άλλη υπηρεσία είναι μια πρόκληση.

  • Η συνεχής παρακολούθηση της χρήσης της υπηρεσίας AWS είναι το κλειδί για τη διατήρηση του παράγοντα κόστους υπό έλεγχο
  • Το AWS προσφέρει Dev Endpoint με εγκατεστημένες όλες τις βιβλιοθήκες spark, αλλά λαμβάνοντας υπόψη την τιμή, δεν είναι βιώσιμο για χρήση για μεγάλες ομάδες ανάπτυξης
  • Η προσβασιμότητα των υπηρεσιών 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 –

  1. Εντοπισμός σφαλμάτων κώδικα PySpark τοπικά χωρίς τη χρήση τερματικών σημείων προγραμματισμού AWS.
  2. Αλληλεπίδραση με τις υπηρεσίες AWS τοπικά

Και τα δύο προβλήματα μπορούν να λυθούν με τη χρήση εικόνων Docker.

  1. Αρχικά, καταργούμε την ανάγκη για διακομιστή σε περιβάλλον AWS και αντί αυτού, μια εικόνα docker που εκτελείται στο μηχάνημα λειτουργεί ως περιβάλλον για την εκτέλεση του κώδικα.

Το AWS παρέχει μια εικόνα sandbox που μπορεί να χρησιμοποιηθεί για σενάρια PySpark. Η εικόνα Docker μπορεί να ρυθμιστεί για την εκτέλεση του κώδικα PySpark. https://aws.amazon.com/blogs/big-data/developing-aws-glue-etl-jobs-locally-using-a-container/
 

  1. Με το μηχάνημα docker διαθέσιμο για την εκτέλεση του κώδικα, υπάρχει ανάγκη για μια υπηρεσία όπως η S3 για την αποθήκευση (ανάγνωση/εγγραφή) αρχείων κατά την κατασκευή ενός αγωγού ETL.

Οι αλληλεπιδράσεις με το S3 μπορούν να αντικατασταθούν με LocalStack το οποίο παρέχει ένα εύχρηστο πλαίσιο δοκιμής/ κοροϊδίας για την ανάπτυξη εφαρμογών Cloud. Δημιουργεί ένα περιβάλλον δοκιμών στον τοπικό σας υπολογιστή που παρέχει τις ίδιες λειτουργίες και API με το πραγματικό περιβάλλον cloud AWS.

επικεφαλίδα

Μέχρι στιγμής, το άρθρο ασχολείται με την κατασκευή ενός αγωγού ETL και τη χρήση των διαθέσιμων υπηρεσιών. Ωστόσο, παρόμοια προσέγγιση μπορεί να προσαρμοστεί σε οποιαδήποτε περίπτωση χρήσης κατά την εργασία με υπηρεσίες AWS όπως λειτουργίες SNS, SQS, CloudFormation, Lambda κ.λπ.

Προσέγγιση

  • Χρησιμοποιήστε τα δοχεία docker ως απομακρυσμένο διερμηνέα
  • Εκτελέστε συνεδρία PySpark στα κοντέινερ
  • Περιστρέψτε την υπηρεσία S3 τοπικά χρησιμοποιώντας το LocalStack
  • Χρησιμοποιήστε τον κώδικα PySpark για ανάγνωση και εγγραφή από τον κάδο S3 που εκτελείται στο LocalStack

Προϋποθέσεις

 
Τα ακόλουθα εργαλεία πρέπει να εγκατασταθούν στο μηχάνημά σας

  • Λιμενεργάτης
  • Κωδικός PyCharm Professional/ VisualStudio

Ρύθμιση

  • Λήψη ή έλξη εικόνων docker (Docker pull )
    • libs:glue_libs_1.0.0_image_01
    • localstack/localstack
  • Τα δοχεία Docker μπορούν να χρησιμοποιηθούν ως απομακρυσμένοι διερμηνείς στην επαγγελματική έκδοση του PyCharm.

Εκτέλεση

 
Με εγκατεστημένο το Docker και έλξη εικόνων στον τοπικό σας υπολογιστή, ξεκινήστε να ρυθμίζετε το PyCharm με διαμορφώσεις για την εκκίνηση των κοντέινερ.

  • Δημιουργήστε ένα αρχείο docker-compose.yml

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

  • Δημιουργήστε ένα DockerFile

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

  • Χρησιμοποιήστε το αρχείο απαιτήσεων με πακέτα που πρόκειται να εγκατασταθούν

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

  • Ρύθμιση απομακρυσμένου διερμηνέα 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

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

  • Η περίοδος λειτουργίας 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.

 
αναφορές:

 
Bio: Subhash Sreenivasachar είναι Επικεφαλής Μηχανικός Λογισμικού στην ομάδα του Epsilon Digital Experience, δημιουργώντας λύσεις μηχανικής για την επίλυση προβλημάτων επιστήμης δεδομένων, συγκεκριμένα την εξατομίκευση και συμβάλλει στην αύξηση της απόδοσης επένδυσης (ROI) για πελάτες.

Συγγενεύων:



Κορυφαίες ιστορίες τις τελευταίες 30 ημέρες
Δημοφιλέστερα
  1. Οι επιστήμονες δεδομένων και οι μηχανικοί ML είναι υπάλληλοι πολυτελείας
  2. Κορυφαία 6 διαδικτυακά μαθήματα επιστήμης δεδομένων το 2021
  3. Συμβουλές για την εκμάθηση της επιστήμης των δεδομένων από τον Διευθυντή Έρευνας της Google
  4. Οι Πάντες δεν είναι αρκετοί; Ακολουθούν μερικές καλές εναλλακτικές λύσεις για την επεξεργασία μεγαλύτερων και ταχύτερων δεδομένων στο Python
  5. Μια μαθησιακή πορεία για να γίνει επιστήμονας δεδομένων
Οι περισσότεροι Shared
  1. Οι επιστήμονες δεδομένων και οι μηχανικοί ML είναι υπάλληλοι πολυτελείας
  2. Χαλαρώστε! Οι επιστήμονες δεδομένων δεν θα εξαφανιστούν σε 10 χρόνια, αλλά ο ρόλος θα αλλάξει
  3. Οι Πάντες δεν είναι αρκετοί; Ακολουθούν μερικές καλές εναλλακτικές λύσεις για την επεξεργασία μεγαλύτερων και ταχύτερων δεδομένων στο Python
  4. Γιατί και πώς πρέπει να μάθετε την «Παραγωγική Επιστήμη Δεδομένων»;
  5. Όχι μόνο για βαθιά μάθηση: Πώς οι GPU επιταχύνουν την Επιστήμη δεδομένων και την Ανάλυση δεδομένων

Πηγή: https://www.kdnuggets.com/2021/08/development-testing-etl-pipelines-aws-locally.html

Σφραγίδα ώρας:

Περισσότερα από KDnuggets