Comment l'analyseur AWS Glue détecte-t-il le schéma ?

Date de la dernière mise à jour : 27/08/2021

J'utilise un analyseur AWS Glue. L'analyseur crée plusieurs tables même si les schémas se ressemblent. Je veux savoir comment mon analyseur détecte le schéma.

Solution

Lorsque vous exécutez votre analyseur AWS Glue, il effectue les opérations suivantes :

  1. Classification des données
  2. Groupement des données dans des tables ou des partitions
  3. Écriture des métadonnées dans le catalogue de données AWS Glue

Consultez les points suivants pour savoir ce qui se passe lorsque vous exécutez l'analyseur et comment l'analyseur détecte le schéma.

Définir un analyseur

Lorsque vous définissez un analyseur AWS Glue, vous pouvez choisir un ou plusieurs classificateurs personnalisés qui évaluent le format de vos données pour déduire un schéma. Lorsque l'analyseur s'exécute, le premier classificateur de votre liste à reconnaître correctement votre magasin de données est utilisé pour créer un schéma pour votre table. Vous définissez les classificateurs personnalisés avant de définir l'analyseur. Lorsque l'analyseur s'exécute, il utilise le classificateur personnalisé que vous avez défini pour trouver une correspondance dans le magasin de données. La correspondance avec chaque classificateur génère une certitude. Si le classificateur renvoie certainty=1.0 pendant le traitement, l'analyseur est sûr à 100 % que le classificateur peut créer le schéma approprié. Dans ce cas, l'analyseur cesse d'appeler d'autres classificateurs, puis crée une table avec le classificateur correspondant au classificateur personnalisé.

Si AWS Glue ne trouve pas de classificateur personnalisé qui correspond au format de données d'entrée avec une certitude de 100 %, AWS Glue appelle les classificateurs intégrés. Le classificateur intégré renvoie soit certainty=1.0 si le format correspond, soit certainty=0.0 si le format ne correspond pas. Si aucun classificateur ne renvoie certainty=1.0, AWS Glue utilise la sortie du classificateur ayant la certitude la plus élevée. Si aucun classificateur ne renvoie une certitude supérieure à 0,0, AWS Glue renvoie la chaîne de classification par défaut UNKNOWN. Pour obtenir la liste actuelle des classificateurs intégrés dans AWS Glue et l'ordre dans lequel ils sont appelés, consultez Classificateurs intégrés dans AWS Glue.

Détection de schéma dans l'analyseur

Lors de la première exécution de l'analyseur, il lit les 1000 premiers enregistrements ou le premier mégaoctet de chaque fichier pour en déduire le schéma. La quantité de données lues dépend du format du fichier et de la disponibilité d'un enregistrement valide. Par exemple, si le fichier d'entrée est un fichier JSON, l'analyseur lit le premier Mo du fichier pour déduire le schéma. Si un enregistrement valide est lu dans le premier Mo du fichier, l'analyseur déduit le schéma. Si l'analyseur ne peut pas déduire le schéma après avoir lu le premier Mo, il lit jusqu'à 10 Mo maximum du fichier, en incrémentant de 1 Mo à la fois. Pour les fichiers CSV, l'analyseur lit soit les 100 premiers enregistrements, soit le premier Mo de données, selon la première occurrence. Pour les fichiers Parquet, l'analyseur déduit le schéma directement à partir du fichier. L'analyseur compare les schémas déduits de tous les sous-dossiers et fichiers, puis crée une ou plusieurs tables. Lorsqu'un analyseur crée une table, il prend en compte les facteurs suivants :

  • Compatibilité des données pour vérifier si les données sont du même format, du même type de compression et du même chemin d'accès.
  • Similarité du schéma pour vérifier la proximité des schémas en termes de seuil de partition et de nombre de schémas différents.

Pour que les schémas soient considérés comme similaires, les conditions suivantes doivent être remplies :

  • Le seuil de partition est supérieur à 0,7 (70 %).
  • Le nombre maximal de schémas différents (également appelés « clusters » dans ce contexte) ne dépasse pas 5.

L'analyseur déduit le schéma au niveau des dossiers et compare les schémas dans tous les dossiers. Si les schémas comparés correspondent, c'est-à-dire si le seuil de partition est supérieur à 70 %, les schémas sont notés comme partitions d'une table. S'ils ne correspondent pas, l'analyseur crée une table pour chaque dossier, ce qui entraîne un nombre plus élevé de tables.

Exemples de scénarios

Exemple 1 : supposons que le dossier DOC-EXAMPLE-FOLDER1 comporte 10 fichiers, 8 fichiers avec le schéma SCH_A et 2 fichiers avec SCH_B.

Supposons que les fichiers avec le schéma SHC_A soient similaires aux suivants :

{ "id": 1, "first_name": "John", "last_name": "Doe"}
{ "id": 2, "first_name": "Li", "last_name": "Juan"}

Supposons que les fichiers avec le schéma SCH_B soient similaires aux suivants :

{"city":"Dublin","country":"Ireland"}
{"city":"Paris","country":"France"}

Lorsque l'analyseur analyse le chemin d'accès Amazon Simple Storage Service (Amazon S3) s3://DOC-EXAMPLE-FOLDER1, il crée une table. La table comprend des colonnes des schémas SCH_A et SCH_B. Cela est dû au fait que 80 % des fichiers du chemin appartiennent au schéma SCH_A et 20 % des fichiers appartiennent au schéma SCH_B. Par conséquent, la valeur de seuil de partition est atteinte. De plus, le nombre de schémas différents n'a pas dépassé le nombre de clusters et la limite de taille du cluster n'est pas dépassée.

Exemple 2 : supposons que le dossier DOC-EXAMPLE-FOLDER2 comporte 10 fichiers, 7 fichiers avec le schéma SCH_A et 3 fichiers avec le schéma SCH_B.

Lorsque l'analyseur analyse le chemin Amazon S3 s3://DOC-EXAMPLE-FOLDER2, il crée une table pour chaque fichier. En effet, 70 % des fichiers appartiennent au schéma SCH_A et 30 % des fichiers appartiennent au schéma SCH_B. Cela signifie que le seuil de partition n'est pas atteint. Vous pouvez consulter les journaux de l'analyseur dans Amazon CloudWatch pour obtenir des informations sur les tables créées.

Options de l'analyseur

  • Créer un schéma unique : pour configurer l'analyseur afin qu'il ignore la similitude du schéma et ne crée qu'un seul schéma, utilisez l'option Créer un schéma unique pour chaque chemin S3. Pour plus d'informations, consultez Comment créer un schéma unique pour chaque chemin d'inclusion Amazon S3. Toutefois, si l'analyseur détecte une incompatibilité des données, il créera toujours plusieurs tables.
  • Spécifier l'emplacement de la table : l'option de l'analyseur de niveau de la table permet d'indiquer à l'analyseur où se trouvent les tables et comment les partitions doivent être créées. Lorsque vous spécifiez une valeur de Niveau de la table, la table est créée à ce niveau absolu à partir du compartiment Amazon S3. Lorsque vous configurez l'analyseur sur la console, vous pouvez spécifier une valeur pour l'option de l'analyseur Niveau de la table. La valeur doit être un entier positif qui indique l'emplacement de la table (le niveau absolu dans le jeu de données). Le niveau du dossier de premier niveau est 1. Par exemple, pour le chemin mydataset/a/b, si le niveau est défini sur 3, la table est créée à l'emplacement mydataset/a/b. Pour plus d'informations, consultez la rubrique Comment spécifier l'emplacement de la table.

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


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