Lecture des fichiers en entrée dans des groupes de plus grande taille - AWS Glue

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Lecture des fichiers en entrée dans des groupes de plus grande taille

Vous pouvez définir les propriétés de vos tables pour activer une tâche ETL AWS Glue regroupant les fichiers lorsqu'ils sont lus à partir d'un magasin de données Amazon S3. Ces propriétés permettent à chaque tâche ETL de lire un groupe de fichiers d'entrée en une seule partition en mémoire, ce qui est particulièrement utile lorsqu'il y a un grand nombre de petits fichiers dans votre magasin de données Amazon S3. Lorsque vous définissez certaines propriétés, vous demandez à AWS Glue de regrouper les fichiers au sein d'une partition de données Amazon S3 et de définir la taille des groupes à lire. Vous pouvez également définir ces options lors de la lecture à partir d'un magasin de données Amazon S3 avec la méthode create_dynamic_frame.from_options.

Pour activer le regroupement de fichiers pour une table, vous définissez les paires clé-valeur dans le champ des paramètres de la structure de votre table. Utilisez la notation JSON pour définir une valeur pour le champ des paramètres de votre table. Pour plus d'informations sur la modification des propriétés d'une table, consultez Afficher et gérer les détails des tables.

Vous pouvez utiliser cette méthode pour activer le regroupement des tables dans Data Calalog avec les magasins de données Amazon S3.

groupFiles

Définissez groupFiles sur inPartition afin d'activer le regroupement de fichiers au sein d'une partition de données Amazon S3. AWS Glue active automatiquement le regroupement s'il y a plus de 50 000 fichiers d'entrée, comme dans l'exemple suivant.

'groupFiles': 'inPartition'
groupSize

Définissez groupSize sur la taille cible des groupes en octets. La propriété groupSize est facultative. Si aucune valeur n'est définie, AWS Glue calcule une taille pour utiliser tous les cœurs d'UC dans le cluster tout en réduisant le nombre total de tâches ETL et les partitions en mémoire.

Par exemple, ce qui suit définit une taille de groupe de 1 Mo.

'groupSize': '1048576'

Notez que le groupsize doit être défini avec le résultat d'un calcul. Par exemple, 1024 * 1024 = 1048576.

recurse

Définissez recurse (récursif) à True pour lire les fichiers de manière récursive dans tous les sous-répertoires lorsque vous spécifiez paths en tant que liste de chemins. Vous n'avez pas besoin de définir recurse si paths est un tableau de clés d'objet dans Amazon S3, ou si le format d'entrée est parquet/orc, comme dans l'exemple suivant.

'recurse':True

Si vous lisez à partir d'Amazon S3 directement à l'aide de la méthode create_dynamic_frame.from_options, ajoutez ces options de connexion. Par exemple, ce qui suit tente de placer les fichiers par groupes de 1 Mo.

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

groupFiles est pris en charge pour les DynamicFrames créés à partir des formats de données suivants : csv, ion, GrokLog, json et xml. Cette option n'est pas prise en charge pour avro, parquet et orc.