AWS Glue es un servicio de integración de datos sin servidor que le permite procesar e integrar datos que se realizan a través de diferentes fuentes de datos a escalera. AWS Glue 5.0, la última lectura de AWS Glue for Apache Spark Jobs, proporciona una experiencia de tiempo de ejecución Apache 3.5 optimizada para el rendimiento para el procesamiento de lotes y transmisiones. Con AWS Glue 5.0, obtienes un rendimiento mejorado, decano seguridad, soporte para la próxima engendramiento de Amazon Sagemakery más. AWS Glue 5.0 le permite desarrollar, ejecutar y progresar sus cargas de trabajo de integración de datos y obtener información más rápido.
AWS Glue acomoda varias preferencias de progreso a través de múltiples enfoques de creación de empleo. Para los desarrolladores que prefieren la codificación directa, el progreso de Python o Scala está arreglado utilizando la Biblioteca AWS Glue ETL.
La creación de plataformas de datos listas para la producción requiere procesos de progreso sólidos y tuberías continuas de integración y entrega (CI/CD). Para apoyar diversas evacuación de progreso, ya sea en máquinas locales, Docker Containers on Aglomeración de cuenta elástica de Amazon (Amazon EC2) u otros entornos: AWS proporciona una imagen oficial de AWS Glue Docker a través del Museo pública de Amazon ECR. La imagen permite a los desarrolladores trabajar de forma capaz en su entorno preferido mientras usan la biblioteca AWS Glue ETL.
En esta publicación, mostramos cómo desarrollar y probar los trabajos de AWS Glue 5.0 localmente usando un contenedor Docker. Esta publicación es una lectura actualizada de la publicación. Desarrollar y probar los trabajos de AWS Glue lectura 3.0 y 4.0 localmente utilizando un contenedor Dockery usa AWS Glue 5.0.
Imágenes de Docker disponibles
Las siguientes imágenes de Docker están disponibles para el Museo pública de Amazon ECR:
- AWS Glue lectura 5.0 –
ecr.aws/glue/aws-glue-libs:5
Las imágenes de Docker de Glue AWS son compatibles con ambas x86_64
y arm64
.
En esta publicación, usamos public.ecr.aws/glue/aws-glue-libs:5
y ejecute el contenedor en una máquina recinto (Mac, Windows o Linux). Esta imagen de contenedor ha sido probada para AWS Glue 5.0 Spark Jobs. La imagen contiene lo sucesivo:
Para configurar su contenedor, extraiga la imagen de la local pública ECR y luego ejecuta el contenedor. Demostramos cómo ejecutar su contenedor con los siguientes métodos, dependiendo de sus requisitos:
spark-submit
- Caparazón de replica (
pyspark
) pytest
- Código de Visual Studio
Requisitos previos
Ayer de comenzar, asegúrese de que Docker esté instalado y Docker Daemon se esté ejecutando. Para las instrucciones de instalación, consulte la documentación de Docker para Impermeable, Windowso Linux. Igualmente asegúrese de tener al menos 7 GB de espacio en disco para la imagen en el host que ejecuta Docker.
Configurar las credenciales de AWS
Para habilitar las llamadas AWS API desde el contenedor, configure sus credenciales de AWS con los siguientes pasos:
- Crear un perfil llamado AWS.
- Bahía CMD en Windows o un terminal en Mac/Linux, y ejecute el sucesivo comando:
En las siguientes secciones, utilizamos este perfil llamado AWS.
Tire de la imagen de la Museo Pública de ECR
Si está ejecutando Docker en Windows, elija el icono Docker (haga clic derecho) y elija Cambiar a los contenedores de Linux antaño de tirar de la imagen.
Ejecute el sucesivo comando para extraer la imagen de la local pública ECR:
Ejecute el contenedor
Ahora puede ejecutar un contenedor usando esta imagen. Puede designar cualquiera de los siguientes métodos basados en sus requisitos.
chispa
Puede ejecutar un raya de trabajo de pegamento de AWS ejecutando el spark-submit
comando en el contenedor.
Escriba su raya de trabajo (sample.py
en el sucesivo ejemplo) y guárdelo bajo el /local_path_to_workspace/src/
directorio usando los siguientes comandos:
Estas variables se utilizan en lo sucesivo docker run
dominio. El código de muestra (sample.py
) usado en el spark-submit
El comando se incluye en el apéndice al final de esta publicación.
Ejecute el sucesivo comando para ejecutar el spark-submit
Comando en el contenedor para mandar una nueva solicitud de Spark:
Shell repler (Pyspark)
Puede ejecutar un shell repler (lee-eval-hinting loop) para el progreso interactivo. Ejecute el sucesivo comando para ejecutar el comando pyspark en el contenedor para iniciar el shell repl:
Verá la sucesivo salida:
Con este shell repl, puede codificar y probar de forma interactiva.
pytest
Para pruebas unitarias, puede usar pytest
Para guiones de trabajo de Glue Glue Spark.
Ejecute los siguientes comandos para la preparación:
Ahora invocemos pytest
usando docker run
:
Cuando pytest
Termina de ejecutar pruebas unitarias, su salida se verá como lo sucesivo:
Código de Visual Studio
Para configurar el contenedor con el código Visual Studio, complete los siguientes pasos:
- Instale el código Visual Studio.
- Instalar Pitón.
- Instalar Contenedores de progreso.
- Bahía la carpeta del espacio de trabajo en el código Visual Studio.
- Prensa Ctrl+Shift+P (Windows/Linux) o CMD+Shift+P (Impermeable).
- Ingresar
Preferences: Open Workspace Settings (JSON)
. - Prensa Ingresar.
- Ingrese posteriormente de JSON y guárdelo:
Ahora estás preparado para configurar el contenedor.
- Ejecute el contenedor Docker:
- Iniciar código de Visual Studio.
- Designar Explorador remoto En el panel de navegación.
- Elija el contenedor
ecr.aws/glue/aws-glue-libs:5
(Haga clic derecho) y elija Adjuntar en la ventana contemporáneo.
- Si aparece el sucesivo diálogo, elija Entiendo.
- Rajado
/home/hadoop/workspace/
.
- Crea un raya AWS Glue Pyspark y elige Pasar.
Debería ver la ejecución exitosa en el raya AWS Glue Pyspark.
Cambios entre la imagen de Docker de AWS Glue 4.0 y AWS Glue 5.0
Los siguientes son cambios importantes entre el AWS Glue 4.0 y la imagen de Glue 5.0 Docker:
- En AWS Glue 5.0, hay una sola imagen de contenedor para trabajos por lotes y transmisión. Esto difiere de AWS Glue 4.0, donde había una imagen para el pedazo y otra para la transmisión.
- En AWS Glue 5.0, el nombre de beneficiario predeterminado del contenedor es Hadoop. En AWS Glue 4.0, el nombre de beneficiario predeterminado fue Glue_user.
- En AWS Glue 5.0, se han eliminado varias bibliotecas adicionales, incluidas Jupyterlab y Livy, de la imagen. Puedes instalarlos manualmente.
- En AWS Glue 5.0, todas las bibliotecas de Iceberg, Hudi y Delta están precargadas de forma predeterminada, y la variable de entorno
DATALAKE_FORMATS
ya no es necesario. Hasta que AWS Glue 4.0, la variable de entornoDATALAKE_FORMATS
se usó para especificar si el formato de tabla específico está cargado.
La cinta precursor es específica de la imagen Docker. Para obtener más información sobre las actualizaciones de AWS Glue 5.0, ver Introducir AWS Glue 5.0 para Apache Spark y Portar AWS Glue para Spark Jobs a AWS Glue Lectura 5.0.
Consideraciones
Tenga en cuenta que las siguientes características no son compatibles cuando se utilizan la imagen del contenedor de pegamento AWS para desarrollar scripts de trabajo localmente:
Conclusión
En esta publicación, exploramos cómo las imágenes de Docker de AWS Glue 5.0 proporcionan una colchoneta flexible para desarrollar y probar scripts de trabajo de pegamento AWS en su entorno preferido. Estas imágenes, fácilmente disponibles en la Museo Pública de Amazon ECR, agilizan el proceso de progreso al ofrecer un entorno consistente y portátil para el progreso de AWS Glue.
Para obtener más información sobre cómo construir la tubería de progreso de extremo a extremo, ver Ciclo de vida de progreso de extremo a extremo para que los ingenieros de datos creen una tubería de integración de datos utilizando AWS Glue. Le recomendamos que explore estas capacidades y comparta sus experiencias con la comunidad de AWS.
Apéndice A: Códigos de muestra de trabajo de pegamento AWS para pruebas
Este apéndice presenta tres scripts diferentes como códigos de muestra de trabajo de pegamento AWS para fines de prueba. Puedes usar cualquiera de ellos en el tutorial.
El sucesivo código Sample.py usa la biblioteca AWS Glue ETL con una Servicio de almacenamiento simple de Amazon (Amazon S3) Citación API. El código requiere permisos de Amazon S3 en Gobierno de identidad y camino de AWS (SOY). Debe otorgar la política administrada por IAM: AWS: IAM :: AWS: Policy/Amazons3ReadonlyAccess o Política personalizada IAM que le permite hacer ListBucket y GetObject API llamadas para la ruta S3.
El sucesivo código test_sample.py es una muestra para una prueba unitaria de sample.py:
Apéndice B: Sumar controladores JDBC y bibliotecas Java
Para añadir un regulador JDBC actualmente arreglado en el contenedor, puede crear un nuevo directorio en su espacio de trabajo con los archivos JAR que necesita y sumar el directorio /opt/spark/jars/
en el docker run
dominio. Archivos jar encontrados en /opt/spark/jars/
Interiormente del contenedor se agregan automáticamente a Spark ClassPath y estará arreglado para su uso durante la ejecución del trabajo.
Por ejemplo, puede usar lo sucesivo docker run
Comando para añadir frascos de regulador JDBC a un shell replic de Pyspark:
Como se destacó anteriormente, el customJdbcDriverS3Path
La opción de conexión no se puede usar para importar un regulador JDBC personalizado de Amazon S3 en las imágenes de contenedores de pegamento AWS.
Apéndice C: Sumar Livy y Jupyterlab
La imagen del contenedor AWS Glue 5.0 no tiene Livy instalada de forma predeterminada. Puede crear una nueva imagen de contenedor que extienda la imagen del contenedor AWS Glue 5.0 como colchoneta. El sucesivo DockerFile demuestra cómo puede extender la imagen de Docker para incluir componentes adicionales que necesita para mejorar su experiencia de progreso y prueba.
Para comenzar, cree un directorio en su tiempo de trabajo y coloque el Dockerfile.livy_jupyter
Archivo en el directorio:
El sucesivo código es Dockerfile.livy_jupyter
:
Ejecute el comando Docker Build para construir la imagen:
Cuando se completa la compilación de la imagen, puede usar el sucesivo comando Docker Run para iniciar la imagen recién construida:
Apéndice D: Sumar bibliotecas adicionales de Python
En esta sección, discutimos añadir bibliotecas adicionales de Python e instalar paquetes de Python usando
Bibliotecas locales de Python
Para añadir bibliotecas locales de Python, colóquelas bajo un directorio y asigne la ruta a $EXTRA_PYTHON_PACKAGE_LOCATION
:
Para validar que se ha asociado la ruta PYTHONPATH
puede realizar su existencia en sys.path
:
Instalación de paquetes de Python con PIP
Para instalar paquetes de PYPI (o cualquier otro repositorio de artefactos) utilizando PIP, puede usar el sucesivo enfoque:
Sobre los autores
Subramanya vajiraya es un ingeniero de la aglomeración de Sr. (ETL) en AWS Sydney especializado en AWS Glue. Le apasiona ayudar a los clientes a resolver problemas relacionados con su carga de trabajo ETL e implementar el procesamiento de datos escalable y las tuberías de examen en AWS. Fuera del trabajo, le gusta ir en biciclo y caminar largos con su perro Ollie.
Noritaka sekiyama es un arquitecto principal de Big Data en el equipo de Glue de AWS. Trabaja con sede en Tokio, Japón. Es responsable de construir artefactos de software para ayudar a los clientes. En su tiempo desocupado, le gusta trastear en biciclo con su biciclo de carretera.