ETL aws glue desarrollo local

aws glue test local

Unos de los principales problemas que se tiene cuando comienzas con glue aws es como puedes probar sin tener que desplegar en la consola de aws la cual puede ser compleja y los logs no se pueden visualizar de manera fácil, para poder comprender como funciona tu script.

Aws nos provee una opcion para poder desarrollar localmente con docker usando una imagen que esta en docker hub  amazon/aws-glue-libs:glue_libs_3.0.0_image_01 y la ejecución del contenedor en un equipo local (Mac/Windows/Linux). Esta imagen de contenedor ha sido probada para detectar trabajos de versión 3.0 de Spark de AWS Glue.

Esta imagen contiene lo siguiente:

  • Amazon Linux
  • Biblioteca de ETL de AWS Glue (aws-glue-libs)
  • Apache Spark 3.1.1
  • Servidor de historial de Spark
  • Laboratorio de Jupyter
  • Livy
  • Otras dependencias de biblioteca ( AWS Glue)

Configuracion

docker pull amazon/aws-glue-libs:glue_libs_1.0.0_image_01

Levantar contenedor Jupyter notebooks

docker run -itd -p 8888:8888 -p 4040:4040 -v ~/.aws:/root/.aws:ro --name glue_jupyter \amazon/aws-glue-libs:glue_libs_1.0.0_image_01 \
/home/jupyter/jupyter_start.sh

spark-submit

Puede ejecutar un script de trabajo de AWS Glue ejecutando el comando spark-submit en el contenedor, puedes ejecutar tus scripts

$ docker run -it -v ~/.aws:/home/glue_user/.aws -v $WORKSPACE_LOCATION:/home/glue_user/workspace/ -e AWS_PROFILE=$PROFILE_NAME -e DISABLE_SSL=true --rm -p 4040:4040 -p 18080:18080 --name glue_spark_submit amazon/aws-glue-libs:glue_libs_3.0.0_image_01 spark-submit /home/glue_user/workspace/src/$SCRIPT_FILE_NAME
...22/01/26 09:08:55 INFO DAGScheduler: Job 0 finished: fromRDD at DynamicFrame.scala:305, took 3.639886 s
root
|-- family_name: string
|-- name: string
|-- links: array
| |-- element: struct
| | |-- note: string
| | |-- url: string
|-- gender: string
|-- image: string
|-- identifiers: array
| |-- element: struct
| | |-- scheme: string
| | |-- identifier: string
|-- other_names: array
| |-- element: struct
| | |-- lang: string
| | |-- note: string
| | |-- name: string
|-- sort_name: string
|-- images: array
| |-- element: struct
| | |-- url: string
|-- given_name: string
|-- birth_date: string
|-- id: string
|-- contact_details: array
| |-- element: struct
| | |-- type: string
| | |-- value: string
|-- death_date: string

...

Referencia

https://noise.getoto.net/2020/09/21/building-an-aws-glue-etl-pipeline-locally-without-an-aws-account/

Desarrollo y pruebas de scripts de trabajo de AWS Glue - AWS Glue
Utilice la biblioteca Scala de AWS Glue disponible públicamente para desarrollar y probar localmente sus scripts de ETL de Python o Scala.