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.

Glue Dynamic Frame es mucho más lento que el Spark regular.

En la imagen siguiente, ejecutamos el mismo trabajo glue con tres configuraciones diferentes en cuanto a cómo escribimos en S3:

  1. Utilizamos un dynamic frame para escribir en S3
  2. Utilizamos un pure spark frame para escribir en S3
  3. Igual que en el punto 1, pero reduciendo el número de nodos de trabajo de 80 a 60
    • Con todas las cosas iguales, el dynamic frame tardó 75 minutos en completar el trabajo, mientras que el spark normal tardó 10 minutos. La salida fue de 100 GB de datos.
    • El dynamic frame es muy sensible al número de nodos de trabajo, fallando debido a problemas de memoria después de 2 horas de procesamiento al reducir ligeramente el número de nodos de trabajo. Esto es sorprendente, ya que podríamos esperar que Glue, al ser un servicio de AWS, manejara mejor las operaciones de escritura en S3.

La diferencia en el código fue la siguiente:

if dynamic:
    df_final_dyn = DynamicFrame.fromDF(df_final, glueContext, "df_final")

    glueContext.write_dynamic_frame.from_options(
    frame=df_final_dyn, connection_type="s3", format="glueparquet", transformation_ctx="DataSink0",
    connection_options={"path": "s3://...", 
    "partitionKeys": ["year", "month", "day"]})

else:
    spark.conf.set("spark.sql.sources.partitionOverwriteMode", "dynamic")
    df_final.write.mode("overwrite").format("parquet").partitionBy("year", "month", "day")\
             .save("s3://.../")

¿Por qué existe tal ineficiencia?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    La ineficiencia en la escritura del marco dinámico en comparación con la escritura regular de Spark podría deberse a la sobrecarga del marco de trabajo Glue que gestiona el marco dinámico. Esto también podría explicar por qué reducir el número de nodos de trabajo llevó a problemas de memoria con el marco dinámico, ya que el marco de trabajo Glue puede requerir más recursos en comparación con Spark regular. Además, el servicio Glue puede tener limitaciones o cuellos de botella al escribir en S3 que no están presentes al usar Spark puro. Se puede requerir una mayor investigación y pruebas para comprender y solucionar completamente el problema.

Comments are closed.