¿Puedo probar el código de AWS Glue localmente?

Después de leer documentos de Amazon, entiendo que la única forma de ejecutar / probar un script de pegamento es implementarlo en un punto final de desarrollo y depurar de forma remota si es necesario. Al mismo tiempo, si el código (Python) consta de varios archivos y paquetes, todos, excepto el script principal, deben estar comprimidos. Todo esto me da la sensación de que Glue no es adecuado para ninguna tarea ETL compleja, ya que el desarrollo y las pruebas son complicados. Podría probar mi código Spark localmente sin tener que cargar el código a S3 cada vez, y verificar las pruebas en un servidor de CI sin tener que pagar por un punto final de pegamento de desarrollo.

Hablé con un ingeniero de ventas de AWS y me dijeron que no, que solo puedes probar el código Glue ejecutando una transformación Glue (en la nube). Mencionó que estaban probando algo llamado Outpost para permitir operaciones locales, pero que aún no estaba disponible públicamente. Así que esto parece un “no” sólido, lo cual es una pena porque de lo contrario parece bastante bueno. Pero sin nuestras pruebas unitarias, no hay que ir para mí.

Puede mantener el código de pegamento y pyspark en archivos separados y puede probar el código de pyspark de manera local. Para comprimir los archivos de dependencia, escribimos un script de shell que comprime los archivos y los carga en la ubicación s3 y luego aplica la plantilla de CF para implementar el trabajo de cola. Para detectar dependencias, creamos (trabajo de pegado) _dependency.txt archivo.

No que yo sepa, y si tiene muchos activos remotos, será complicado. Usando Windows, normalmente ejecuto un punto final de desarrollo y un cuaderno de zeppelin local mientras estoy creando mi trabajo. Lo apago cada día.

Puede usar el editor de tareas> editor de secuencias de comandos para editar, guardar y ejecutar la tarea. No estoy seguro de la diferencia de costos.

Añadiendo a CedricB,

Para propósitos de desarrollo / prueba, no es necesario cargar el código en S3, y puede configurar un cuaderno zeppelin localmente, tener una conexión SSH establecida para que pueda tener acceso al catálogo de datos / rastreadores, etc. y también el cubo s3 donde residen sus datos.

Una vez completadas todas las pruebas, puede agrupar su código y cargarlo en un depósito S3. Luego cree un trabajo que apunte a la secuencia de comandos ETL en el grupo S3, de modo que el trabajo pueda ejecutarse y progtwigrse también. Una vez que se haya completado todo el desarrollo / prueba, asegúrese de eliminar el punto final de desarrollo, ya que se nos cobrará incluso por el tiempo de inactividad.

Saludos