es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Se necesita asesoramiento de AWS Glue para escalar o evaluar el rendimiento.

Escenario:
Tengo un trabajo de AWS Glue que se ocupa de S3 y realiza algunas exploraciones para insertar datos de los archivos de S3 en postgres en RDS.

Debido a que el tamaño del archivo a veces es muy grande, lleva mucho tiempo realizar la operación, por lo que el tiempo que dura el trabajo es más de 2 días.

El script para el trabajo está escrito en python.

Estoy buscando una forma de poder mejorar el trabajo de alguna manera, como:

  • Algún tipo de opciones de multiprocesamiento dentro del trabajo para una ejecución más rápida – ¿es factible? ¿hay opciones / alternativas para esto?
  • ¿Hay alguna opción oculta o inexplorada de AWS que pueda probar para este tipo de actividad?
  • ¿Alguna idea innovadora?

Cualquier respuesta sería apreciada, ¡gracias!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución:

    Como experto en IT especializado en Python, multithreading, Amazon Web Services y AWS Glue, recomiendo las siguientes soluciones:

    1. Opciones de multithreading en el trabajo para realizar una ejecución más rápida

    El multithreading es una opción viable para mejorar el rendimiento del trabajo. Con multithreading, se pueden utilizar hilos para paralelizar el procesamiento de archivos grandes, lo que puede reducir en gran medida el tiempo de procesamiento. Usando la clase ThreadPoolExecutor en el módulo concurrent.futures de Python, podemos crear un grupo de hilos para ejecutar múltiples instancias del trabajo. Esto nos permitirá aprovechar al máximo múltiples CPU y reducir el tiempo de ejecución general. Sin embargo, debemos asegurarnos de que la conexión a la base de datos sea segura para los hilos y también hacer pruebas exhaustivas sobre el enfoque multitarea.

    2. Opciones ocultas o sin explorar de AWS para este tipo de actividad

    AWS proporciona varios servicios que se pueden utilizar para mejorar el rendimiento del trabajo. Aquí hay algunas opciones a considerar:

    • Utilice AWS Lambda para activar el trabajo de AWS Glue. Lambda le permite ejecutar su código sin tener que aprovisionar ni administrar servidores, lo que puede ahorrar costos y mejorar la escalabilidad.
    • Utilice AWS Batch para ejecutar el trabajo de AWS Glue. Batch le permite ejecutar cargas de trabajo de informática por lotes en la nube de AWS, lo que puede aumentar la eficiencia, mejorar la seguridad y reducir los costos.

    Estas opciones pueden ayudar a optimizar el rendimiento del trabajo, reducir el tiempo de inactividad y aumentar la confiabilidad.

    3. Pensamientos innovadores

    Aquí hay algunos pensamientos innovadores a considerar:

    • Comprimir los archivos en S3 antes de insertarlos en RDS. Esto puede reducir el tamaño del archivo y mejorar las tasas de transferencia, lo que hace que el trabajo sea más rápido.
    • Utilice ETL de AWS Glue para transformar los datos antes de insertarlos en RDS. ETL le permite extraer datos de varias fuentes, transformarlos y cargarlos en un sistema de destino.
    • Utilice la función de particionamiento dinámico de AWS Glue para consultar eficientemente conjuntos de datos grandes en S3. Esto le permite leer datos de grandes conjuntos de datos particionados por fecha u otros atributos, y luego escribir los datos en RDS.

    En general, estas son algunas soluciones prácticas para mejorar el rendimiento del trabajo de AWS Glue mientras trabaja con archivos grandes en S3 e insertándolos en RDS.

Comments are closed.