Ajout de classifieurs à un Crawler dans AWS Glue - 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.

Ajout de classifieurs à un Crawler dans AWS Glue

Un classifieur lit les données d'un magasin de données. S'il reconnaît le format des données, il génère un schéma. Le classifieur renvoie également un pourcentage de certitude pour indiquer jusqu'à quel degré la reconnaissance du format était certaine.

AWS Glue fournit un ensemble de classifieurs intégrés, mais vous pouvez également créer classifieurs personnalisés. AWS Glue appelle les classifieurs personnalisés en premier, dans l'ordre que vous spécifiez dans votre définition d'crawler. Selon les résultats renvoyés par les classifieurs personnalisés, AWS Glue peut également appeler les classifieurs intégrés. Si un classifieur renvoie certainty=1.0 pendant le traitement, cela indique qu'il est sûr à 100 % de pouvoir créer le schéma correct. AWS Glue utilise ensuite la sortie de ce classifieur.

Si aucun classifieur ne renvoie certainty=1.0, AWS Glue utilise la sortie du classifieur qui a la certitude la plus élevée. Si aucun classifieur ne renvoie une certitude supérieure à 0.0, AWS Glue renvoie la chaîne de classification par défaut UNKNOWN.

Quand dois-je utiliser un classifieur ?

Vous utilisez les classifieurs lorsque vous analysez un magasin de données pour définir les tables de métadonnées dans l'AWS Glue Data Catalog. Vous pouvez configurer votre crawler avec un ensemble ordonné de classifieurs. Lorsque l'crawler appelle un classifieur, le classifieur détermine si les données sont reconnues. Si le classificateur ne peut pas reconnaître les données ou n'est pas certain à 100 %, l'crawler appelle le prochain classificateur de la liste pour déterminer s'il peut reconnaître les données.

Pour plus d'informations sur la création d'un classifieur à l'aide de la console AWS Glue, consultez Utilisation des classifieurs sur la console AWS Glue.

Classifieurs personnalisés

La sortie d'un classifieur comprend une chaîne qui indique la classification du fichier ou le format (par exemple, json) et le schéma du fichier. Pour les classifieurs personnalisés, vous définissez la logique de création du schéma en fonction du type de classifieur. Les types de classifieur incluent la définition de schémas basés sur les modèles grok, les balises XML et les chemins d'accès JSON.

Si vous modifiez une définition de classifieur, toutes les données précédemment analysées à l'aide du classifieur ne sont pas reclassées. Un crawler garde trace des données précédemment analysées. Les nouvelles données sont classées avec le classifieur mis à jour, ce qui peut entraîner une mise à jour du schéma. Si le schéma de vos données a évolué, mettez à jour le classifieur pour prendre en compte les modifications de schéma lorsque votre crawler s'exécute. Pour reclasser les données et corriger un classificateur incorrect, créez un nouvel crawler avec le classificateur mis à jour.

Pour plus d'informations sur la création de classifieurs personnalisés dans AWS Glue, consultez Écriture de classifieurs personnalisés.

Note

Si votre format de données est reconnu par l'un des classifieurs intégrés, vous n'avez pas besoin de créer un classifieur personnalisé.

Classifieurs intégrés dans AWS Glue

AWS Glue fournit des classifieurs intégrés pour différents formats, y compris JSON, CSV, les journaux web et de nombreux systèmes de bases de données.

Si AWS Glue ne trouve pas de classifieur personnalisé qui correspond au format des données en entrée avec 100 % de certitude, il fait appel aux classifieurs intégrés dans l'ordre indiqué dans le tableau suivant. Les classifieurs intégrés renvoient un résultat pour indiquer si le format correspond à (certainty=1.0) ou ne correspond à (certainty=0.0). Le premier classifieur qui a certainty=1.0 fournit la chaîne de classification et le schéma pour une table de métadonnées de votre Data Catalog.

Type de classifieur Chaîne de classification Remarques
Apache Avro avro Lit le schéma au début du fichier pour déterminer le format.
Apache ORC orc Lit les métadonnées du fichier pour déterminer le format.
Apache Parquet parquet Lit le schéma à la fin du fichier pour déterminer le format.
JSON json Lit le début du fichier pour déterminer le format.
Binaire JSON bson Lit le début du fichier pour déterminer le format.
xml xml Lit le début du fichier pour déterminer le format. AWS Glue détermine le schéma de table en fonction des balises XML du document.

Pour plus d'informations sur la création d'un classifieur XML personnalisé pour spécifier les lignes du document, reportez-vous à la section Écriture de classifieurs XML personnalisés.

Amazon Ion ion Lit le début du fichier pour déterminer le format.
Journal Apache combiné combined_apache Détermine les formats de journaux par le biais d'un modèle grok.
Journal Apache apache Détermine les formats de journaux par le biais d'un modèle grok.
Journal du noyau Linux linux_kernel Détermine les formats de journaux par le biais d'un modèle grok.
Journal Microsoft microsoft_log Détermine les formats de journaux par le biais d'un modèle grok.
Journal Ruby ruby_logger Lit le début du fichier pour déterminer le format.
Journal Squid 3.x squid Lit le début du fichier pour déterminer le format.
Journal de surveillance Redis redismonlog Lit le début du fichier pour déterminer le format.
Journal Redis redislog Lit le début du fichier pour déterminer le format.
CSV csv Recherche les séparateurs suivants : virgule (,), barre verticale (|), tabulation (\t), point-virgule (;) et Ctrl-A (\u0001). Ctrl-A est le caractère de contrôle Unicode pour Start Of Heading.
Amazon Redshift redshift Utilise la connexion JDBC pour importer les métadonnées.
MySQL mysql Utilise la connexion JDBC pour importer les métadonnées.
PostgreSQL postgresql Utilise la connexion JDBC pour importer les métadonnées.
Oracle Database oracle Utilise la connexion JDBC pour importer les métadonnées.
Microsoft SQL Server sqlserver Utilise la connexion JDBC pour importer les métadonnées.
Amazon DynamoDB dynamodb Lit les données de la table DynamoDB.

Les fichiers aux formats compressés suivants peuvent être classés :

  • ZIP (pris en charge pour les archives contenant uniquement un fichier unique). Notez que Zip n'est pas correctement pris en charge dans d'autres services (en raison de l'archive).

  • BZIP

  • GZIP

  • LZ4

  • Snappy (pris en charge pour les formats Snappy standard et natifs Hadoop)

Classifieur CSV intégré

Le classifieur CSV intégré analyse le contenu du fichier CSV pour déterminer le schéma d'une table AWS Glue. Le classifieur vérifie les délimiteurs suivants :

  • Virgule (,)

  • Pipe (|)

  • Tabulation (\t)

  • Point-virgule (;)

  • Ctrl-A (\u0001)

    Ctrl-A est le caractère de contrôle Unicode pour Start Of Heading.

Pour être classé comme CSV, le schéma de table doit avoir au moins deux colonnes et deux lignes de données. Le classifieur CSV utilise un certain nombre de méthodes heuristiques pour déterminer si un en-tête est présent dans un fichier donné. Si le classifieur ne peut pas déterminer un en-tête à partir de la première ligne de données, les en-têtes de colonne sont affichés en tant que col1, col2, col3, et ainsi de suite. Le classifieur CSV intégré détermine s'il convient de déduire un en-tête en évaluant les caractéristiques suivantes du fichier :

  • Chaque colonne d'un en-tête potentiel s'analyse en tant que type de données STRING.

  • À l'exception de la dernière colonne, chaque colonne d'un en-tête potentiel a un contenu de moins de 150 caractères. Pour autoriser un délimiteur de fin, la dernière colonne peut être vide dans le fichier.

  • Chaque colonne d'un en-tête potentiel doit répondre aux exigences AWS Glue regex pour un nom de colonne.

  • La ligne d'en-tête doit être suffisamment différente des lignes de données. Pour le déterminer, une ou plusieurs lignes doivent s'analyser autrement que de type STRING. Si toutes les colonnes sont de type STRING, la première ligne de données n'est pas suffisamment différente des lignes suivantes pour être utilisée comme en-tête.

Note

Si le classifieur CSV intégré ne crée pas votre table AWS Glue comme vous le souhaitez, vous pouvez utiliser l'une des solutions suivantes :

  • Modifiez les noms de colonne du Data Catalog, définissez la structure SchemaChangePolicy sur LOG et définissez la configuration de sortie de la partition sur InheritFromTable pour les futures exécutions de l'crawler.

  • Créez un classifieur grok personnalisés pour analyser les données et attribuez les colonnes de votre choix.

  • Le classifieur CSV intégré crée les tables en faisant référence à LazySimpleSerDe comme bibliothèque de sérialisation, ce qui est un bon choix pour l'inférence du type. Toutefois, si les données CSV contiennent des chaînes entre guillemets, modifiez la définition de la table et remplacez la bibliothèque SerDe par OpenCSVSerDe. Ajustez les types déduits sur STRING, définissez la structure SchemaChangePolicy sur LOG et définissez la configuration de sortie des partitions sur InheritFromTable pour les futures exécutions de l'crawler. Pour plus d'informations sur les bibliothèques SerDe, consultez Référence SerDe dans le Guide de l’utilisateur Amazon Athena.