Lectura de archivos de entrada en grupos grandes - AWS Glue

Lectura de archivos de entrada en grupos grandes

Puede configurar propiedades de las tablas para habilitar que un trabajo de ETL de AWS Glue agrupe archivos cuando se leen desde un almacén de datos de Amazon S3. Estas propiedades permiten que cada tarea de ETL lea un grupo de archivos de entrada en una sola partición en memoria. Esto es especialmente útil cuando hay una gran cantidad de archivos pequeños en el almacén de datos de Amazon S3. Cuando configura determinadas propiedades, le indica a AWS Glue que agrupe los archivos en una partición de datos de Amazon S3 y configura el tamaño de los grupos que se leerán. También puede establecer estas opciones al leer desde un almacén de datos de Amazon S3 con el método create_dynamic_frame.from_options.

Para habilitar la agrupación de archivos para una tabla, establezca los pares clave-valor y en el campo de parámetros de la estructura de tabla. Utilice la notación JSON para establecer un valor del campo de parámetros de la tabla. Para obtener más información acerca de la edición de las propiedades de una tabla, consulte Visualización y edición de los detalles de la tabla.

Puede utilizar este método para habilitar la agrupación de tablas en Data Catalog con almacenes de datos de Amazon S3.

groupFiles

Establezca groupFiles (agrupar archivos) en inPartition para habilitar la agrupación de archivos en una partición de datos de Amazon S3. AWS Glue habilita automáticamente la agrupación si hay más de 50 000 archivos de entrada, como en el ejemplo siguiente.

'groupFiles': 'inPartition'
groupSize

Establezca groupSize en tamaño de destino de los grupos en bytes. La propiedad groupSize es opcional; si no se proporciona, AWS Glue calcula un tamaño para utilizar todos los núcleos de CPU del clúster a la vez que reduce el número total de tareas de ETL y particiones en memoria.

Por ejemplo, la entrada siguiente establece el tamaño del grupo en 1 MB.

'groupSize': '1048576'

Tenga en cuenta que groupsize se debe establecer con el resultado de un cálculo. Por ejemplo, 1024 * 1024 = 1048576.

recurse

Configure recurse en True para que lea de forma recursiva los archivos en todos los subdirectorios cuando especifique paths como una matriz de rutas. No es necesario establecer recurse (acción recursiva) si paths es una matriz de claves de objeto en Amazon S3, como en el ejemplo siguiente.

'recurse':True

Si va a leer de Amazon S3 directamente con el método create_dynamic_frame.from_options, agregue estas opciones de conexión. Por ejemplo, el siguiente código intenta agrupar los archivos en grupos de 1 MB.

df = glueContext.create_dynamic_frame.from_options("s3", {'paths': ["s3://s3path/"], 'recurse':True, 'groupFiles': 'inPartition', 'groupSize': '1048576'}, format="json")
nota

groupFiles es compatible con los objetos DynamicFrames creados a partir de los siguientes formatos de datos: csv, ion, GrokLog, json y xml. Esta opción no es compatible con avro, parquet y orc.