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 AWS Glue Tâche ETL pour regrouper les fichiers lorsqu'ils sont lus depuis 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 indiquez AWS Glue pour regrouper des fichiers au sein d'une partition de données Amazon S3 et 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 pour inPartition permettre le regroupement de fichiers au sein d'une partition de données Amazon S3. AWS Glue active automatiquement le regroupement s'il existe 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 elle n'est pas fournie, AWS Glue calcule une taille pour utiliser tous les cœurs de processeur du cluster tout en réduisant le nombre total de tâches ETL et de 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

groupFilesest pris en charge pour les formats de données 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.