Pourquoi l'exécution de l'analyseur AWS Glue prend-elle beaucoup de temps ?

Date de la dernière mise à jour : 24/09/2019

L'analyseur AWS Glue s'exécute depuis plusieurs heures et ne parvient toujours pas à identifier le schéma dans mon magasin de données. Pourquoi l'analyseur s'exécute-t-il pendant si longtemps et comment puis-je l'accélérer ?

Brève description

Voici quelques causes courantes des durées d'exécution de l'analyseur :

  • Ajout fréquent de nouvelles données : lors de la première exécution de l'analyseur, l'analyseur lit le premier méga-octet de chaque fichier pour en inférer le schéma. Lors des exécutions suivantes de l'analyseur, il répertorie les fichiers dans la cible, y compris les fichiers analysés lors de la première exécution, et lit le premier méga-octet des nouveaux fichiers. L'analyseur ne lit pas les fichiers qui ont été lus lors de sa précédente exécution. Par conséquent, les exécutions suivantes de l'analyseur sont souvent plus rapides. Toutefois, lorsque vous ajoutez un grand nombre de fichiers ou de dossiers à votre magasin de données entre les exécutions de l'analyseur, la durée d'exécution augmente à chaque fois.
  • Analyse des fichiers compressés : l'analyse des fichiers compressés prend plus de temps. Cela est dû au fait que l'analyseur doit télécharger le fichier et le décompresser avant de lire le premier méga-octet ou de lister le fichier.
    Remarque : pour les fichiers Apache Parquet, Apache Avro et Apache Orc, l'analyseur n'analyse pas le premier méga-octet. Au lieu de cela, l'analyseur lit les métadonnées stockées dans chaque fichier.

Résolution

Avant de commencer le dépannage, assurez-vous que vous avez besoin d'exécuter un analyseur. Vous n'avez pas besoin d'exécuter un analyseur, à moins d'avoir besoin de créer une table dans le catalogue de données AWS Glue et d'utiliser la table dans une tâche ETL ou un service en aval tel qu'Amazon Athena. Pour les tâches ETL, vous pouvez utiliser from_options pour lire les données directement à partir du magasin de données et utiliser les transformations sur le DynamicFrame. Dans ce cas, vous n'avez pas besoin d'un analyseur dans votre pipeline ETL. Si vous trouvez qu'un analyseur est pertinent pour votre cas d'utilisation, utilisez une ou plusieurs des méthodes suivantes pour réduire les temps d'exécution de l'analyseur.

Utiliser un modèle d'exclusion

Un modèle d'exclusion indique à l'analyseur d'ignorer certains fichiers ou chemins. Les modèles d'exclusion réduisent le nombre de fichiers que l'analyseur doit répertorier, ce qui signifie que l'analyseur s'exécute plus rapidement. Par exemple, utilisez un modèle d'exclusion pour exclure les méta-fichiers et les fichiers qui ont déjà été analysés. Pour plus d'informations, y compris des exemples de modèles d'exclusion, consultez Modèles d'inclusion et d'exclusion.

Exécuter plusieurs analyseurs

Au lieu d'exécuter un analyseur sur l'ensemble du magasin de données, pensez à exécuter plusieurs analyseurs. Il est préférable d'exécuter plusieurs analyseurs pendant une courte durée que d'exécuter un seul analyseur pendant une longue durée. Par exemple, supposons que vous partitionnez vos données par année et que chaque partition contient une grande quantité de données. Si vous exécutez un analyseur différent sur chaque partition (chaque année), les tâches d'exécution des analyseurs se terminent plus rapidement.

Combiner de tout petits fichiers pour obtenir des fichiers plus volumineux

Il faut plus de temps pour analyser un grand nombre de petits fichiers qu'un petit nombre de fichiers volumineux. En effet, elle doit répertorier chaque fichier et doit lire le premier méga-octet de chaque nouveau fichier.