web-dev-qa-db-fra.com

Puis-je tester le code AWS Glue localement?

Après avoir lu Amazon docs, j'ai cru comprendre que le seul moyen d'exécuter/tester un script Glue est de le déployer sur un point de terminaison dev et de le déboguer à distance si nécessaire. En même temps, si le code (Python) se compose de plusieurs fichiers et packages, tous les fichiers sauf le script principal doivent être compressés. Tout cela me donne l’impression que la colle ne convient à aucune tâche ETL complexe, car le développement et les tests sont lourds. Je pouvais tester mon code Spark localement sans avoir à le télécharger à chaque fois sur S3 et vérifier les tests sur un serveur CI sans avoir à payer pour un noeud final de développement Glue.

10
lfk

J'ai parlé à un ingénieur commercial AWS et ils ont répondu non, vous pouvez uniquement tester le code Glue en exécutant une transformation Glue (dans le cloud). Il a mentionné que quelque chose appelé Outpost avait été mis à l'essai pour autoriser les opérations sur site, mais qu'il n'était pas encore disponible publiquement. Cela ressemble donc à un "non" solide, ce qui est dommage car sinon, cela semble plutôt joli. Mais sans les tests unitaires, ce n'est pas possible pour moi.

2
nont

Vous pouvez conserver la colle et le code pyspark dans des fichiers séparés et vous pouvez tester localement le code pyspark. Pour les fichiers de dépendance compressés, nous avons écrit un script Shell qui compresse les fichiers et les télécharge vers l'emplacement s3, puis applique le modèle CF pour déployer le travail de collage. Pour détecter les dépendances, nous avons créé le fichier _dependency.txt (travail de collage).

2
Sandeep Fatangare

Pas que je sache, et si vous avez beaucoup d'actifs distants, ce sera délicat. Sous Windows, j'utilise normalement un noeud final de développement et un bloc-notes local zeppelin pendant la création de mon travail. Je le ferme chaque jour. 

Vous pouvez utiliser l'éditeur de travail> éditeur de script pour modifier, enregistrer et exécuter le travail. Pas sûr de la différence de coût.

1
CedricB

Ajout à CedricB,

Pour des raisons de développement/test, il n'est pas nécessaire de télécharger le code sur S3. Vous pouvez également configurer un bloc-notes zeppelin localement, établir une connexion SSH afin de pouvoir accéder au catalogue de données/aux robots d'exploration, etc. ainsi que le compartiment s3 où résident vos données. 

Une fois tous les tests terminés, vous pouvez regrouper votre code et le télécharger dans un compartiment S3. Créez ensuite un travail pointant sur le script ETL dans le compartiment S3, afin que le travail puisse être exécuté et planifié également. Une fois que tous les développements/tests sont terminés, assurez-vous de supprimer le point de terminaison dev, car nous sommes facturés même pour le temps d'inactivité.

Cordialement

1
Yuva