Comment empêcher l'analyseur AWS Glue de créer plusieurs tables ?

Dernière mise à jour : 30/07/2021

Pourquoi l'analyseur AWS Glue crée-t-il plusieurs tables à partir de mes données sources, et comment éviter que cela ne se produise ?

Brève description

L'analyseur AWS Glue crée plusieurs tables lorsque vos fichiers de données sources n'utilisent pas le ou la même :

  • Format (tel que CSV, Parquet ou JSON)
  • Type de compression (par exemple, SNAPPY, gzip ou bzip2)
  • Schéma
  • Structure des partitions Amazon Simple Storage Service (Amazon S3)

Résolution

Vérifiez les journaux de l'analyseur

Vérifiez les journaux de l'analyseur pour identifier les fichiers qui entraînent la création de plusieurs tables par l'analyseur :

1.    Ouvrez la console AWS Glue.

2.    Dans le volet de navigation, sélectionnez Crawlers (Analyseurs).

3.    Sélectionnez l'analyseur, puis choisissez le lien Logs (Journaux) pour afficher les journaux sur la console Amazon CloudWatch.

4.    Si AWS Glue a créé plusieurs tables lors de la précédente exécution de l'analyseur, alors le journal contiendra des entrées telles que les suivantes :

[439d6bb5-ce7b-4fb7-9b4d-805346a37f88]
 INFO : Created table 
2_part_00000_24cab769_750d_4ef0_9663_0cc6228ac858_c000_snappy_parquet in
 database glue
[439d6bb5-ce7b-4fb7-9b4d-805346a37f88]
 INFO : Created table 
2_part_00000_3518b196_caf5_481f_ba4f_3e968cbbdd67_c000_snappy_parquet in
 database glue
[439d6bb5-ce7b-4fb7-9b4d-805346a37f88]
 INFO : Created table 
2_part_00000_6d2fffc2_a893_4531_89fa_72c6224bb2d6_c000_snappy_parquet in
 database glue

Les entrées du journal comprennent les noms des fichiers qui entraînent la création de plusieurs tables par l'analyseur.

Empêcher la création de plusieurs tables

Pour empêcher la création de plusieurs tables, envisagez une ou plusieurs des options suivantes :

  • Confirmez que tous les fichiers de données utilisent le même schéma, format et type de compression. Si certains fichiers utilisent des schémas différents (par exemple, le schéma A indique que le champ X est de type INT et le schéma B indique que le champ X est de type BOOL), vous pouvez effectuer l'une des opérations suivantes :
    • Exécutez une tâche Extract-transform-load (ETL) AWS Glue pour lire les données aberrantes à l'aide de la fonction from_options. Ensuite, transformez les types de données aberrantes en types de données corrects ou les plus courants dans votre source.
    • Utilisez Amazon Athena pour créer manuellement la table à l'aide d'une DDL de table existante. Exécutez ensuite un analyseur AWS Glue pour mettre à jour les métadonnées de la table en utilisant le paramètre de l'analyseur pour hériter du schéma de la table.
  • Si vos données ont des schémas différents dans certains fichiers d'entrée et des schémas similaires dans d'autres fichiers, vous pouvez combiner des schémas compatibles lorsque vous créez l'analyseur. Sur la page Configuration de la sortie de l'analyseur, sous Comportement de groupement pour données S3 (facultatif), sélectionnez Créer un schéma unique pour chaque chemin S3. Lorsque ce paramètre est activé et que les données sont compatibles, l'analyseur ignore la similarité des schémas spécifiques lors de l'évaluation des objets Amazon S3 dans le chemin d'inclusion spécifié. Pour plus d'informations, consultez la rubrique Comment créer un schéma unique pour chaque chemin d'inclusion Amazon S3.
  • Si vos fichiers d'entrée ont des structures ou chemins Amazon S3 différents, l'analyseur crée plusieurs tables. Par exemple, supposons que l'analyseur analyse un chemin S3 s3://doc-example-bucket/doc-example-key/doc-example-table avec une structure de partition similaire à la suivante :
    s3://doc-example-bucket/doc-example-key/doc-example-table/dt=2020-08-20/doc-example-file1.csv
    s3://doc-example-bucket/doc-example-key/doc-example-table/dt=2020-08-21/dox-example-file2.csv
    s3://doc-example-bucket/doc-example-key/doc-example-table/dt=2020-08-22/doc-example-file3.csv
    s3://doc-example-bucket/doc-example-key/doc-example-table/dox-example-file4.csv
    s3:// doc-example-bucket/doc-example-key/doc-example-table/doc-example-file5.csv
    Ensuite, l'analyseur crée plusieurs tables en raison d'une structure de partition incohérente.
    Pour éviter ce problème, vous pouvez effectuer les opérations suivantes :
    • Rendez le schéma cohérent manuellement ou programmatiquement. Dans cet exemple, vous pouvez soit supprimer les fichiers s3 sans la partition dt=xxxx-xx-xx, soit ajouter la partition pour les fichiers doc-example-file4.csv et doc-example-file5.csv.
    • Utilisez un modèle d'exclusion pour ignorer les fichiers ou dossiers indésirables.
  • Lorsque vous utilisez des données CSV, veillez à utiliser les en-têtes de manière cohérente. Si certains de vos fichiers ont des en-têtes et d'autres non, l'analyseur créera plusieurs tables.

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?