Personnalisation du comportement des robots d'exploration - 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.

Personnalisation du comportement des robots d'exploration

Lorsqu'un crawler s'exécute, il peut rencontrer des modifications apportées à votre magasin de données qui entraînent une différence de schéma ou de partition par rapport à l'analyse précédente. Vous pouvez utiliser l'API AWS Management Console ou l'AWS GlueAPI pour configurer la manière dont votre robot traite certains types de modifications.

Console

Lorsque vous définissez un crawler à l'aide de la console AWS Glue, vous disposez de plusieurs options pour configurer le comportement de votre crawler. Pour plus d'informations sur l'utilisation de la console AWS Glue pour ajouter un crawler, consultez Configuration d'un crawler.

Lorsqu'un crawler s'exécute sur un magasin de données analysé précédemment, il peut découvrir qu'un schéma a été modifié ou que certains objets du magasin de données ont été supprimés. L'crawler enregistre les modifications apportées au schéma. En fonction du type de source pour l’crawler, les nouvelles tables et partitions peuvent être créées indépendamment de la politique de modification du schéma.

Pour spécifier ce que fait l'crawler lorsqu'il détecte des modifications du schéma, vous pouvez choisir l'une des actions suivantes sur la console :

  • Update the table definition in the Data Catalog (Mettre à jour la définition de table dans Data Catalog) – ajoutez de nouvelles colonnes, supprimez les colonnes manquantes et modifiez les définitions des colonnes existantes sur le AWS Glue Data Catalog. Supprimez toutes les métadonnées qui ne sont pas définies par l'crawler. Il s’agit du paramètre par défaut.

  • Add new columns only (Ajouter uniquement de nouvelles colonnes) – pour les tables qui sont mappées à un magasin de données Amazon S3, ajoutez de nouvelles colonnes au fur et à mesure qu'elles sont détectées, mais ne supprimez pas ou ne modifiez pas le type de colonnes existantes dans Data Catalog. Choisissez cette option lorsque les colonnes actuelles du Data Catalog sont correctes et que vous ne voulez pas que l'crawler supprime ou modifie le type des colonnes existantes. Si un attribut de table Amazon S3 fondamental change, tel que la classification, le type de compression ou le délimiteur CSV, marquez la table comme obsolète. Maintenez le format d'entrée et le format de sortie tels qu'ils existent dans Data Catalog. Mettez à jour SerDe les paramètres uniquement s'il s'agit d'un paramètre défini par le robot d'exploration. Pour tous les autres magasins de données, modifiez les définitions de colonne existantes.

  • Ignore the change and don't update the table in the Data Catalog (Ignorer le changement et ne pas mettre à jour la table dans Data Catalog) – seules les nouvelles tables et partitions sont créées.

    Il s'agit du paramètre par défaut pour les analyses incrémentielles.

Un crawler peut également détecter les partitions nouvelles ou modifiées. Par défaut, de nouvelles partitions sont ajoutées et des partitions existantes sont mises à jour si elles ont été modifiées. En outre, vous pouvez définir une option de configuration de l'crawler pour Mettre à jour toutes les partitions nouvelles et existantes avec les métadonnées de la table sur la console AWS Glue. Lorsque cette option est définie, les partitions héritent des propriétés des métadonnées, telles que leur classification, leur format d'entrée, leur format de sortie, leurs SerDe informations et leur schéma, de leur table parent. Les modifications apportées aux propriétés de la table parent sont propagées à ses partitions. Lorsque cette option de configuration est définie sur un crawler existant, les partitions existantes sont mises à jour de manière à établir la correspondre avec les propriétés de leur table parent lors de la prochaine exécution de l'crawler.

Lorsque l'crawler détecte un objet supprimé dans le magasin de données, vous pouvez choisir l'une des actions suivantes :

  • Supprimer les tables et les partitions du Data Catalog

  • Ignorer les modifications et ne pas mettre la table à jour dans Data Catalog

    Il s'agit du paramètre par défaut pour les analyses incrémentielles.

  • Mark the table as deprecated in the Data Catalog (Marquer la table comme obsolète dans Data Catalog) – il s'agit du paramètre par défaut.

AWS CLI
aws glue create-crawler \ --name "your-crawler-name" \ --role "your-iam-role-arn" \ --database-name "your-database-name" \ --targets 'S3Targets=[{Path="s3://your-bucket-name/path-to-data"}]' \ --configuration '{"Version": 1.0, "CrawlerOutput": {"Partitions": {"AddOrUpdateBehavior": "InheritFromTable"}, "Tables": {"AddOrUpdateBehavior": "MergeNewColumns"}}}'
API

Lorsque vous définissez un robot à l'aide de l' AWS Glue API, vous pouvez choisir parmi plusieurs champs pour le configurer. La politique SchemaChangePolicy de l'API de l'crawler détermine ce que l'crawler fait lorsqu'il détecte un changement de schéma ou une suppression d'objet. L'crawler enregistre les modifications de schéma au cours de son exécution.

Exemple de code python illustrant les options de configuration du crawler

import boto3 import json # Initialize a boto3 client for AWS Glue glue_client = boto3.client('glue', region_name='us-east-1') # Replace 'us-east-1' with your desired AWS region # Define the crawler configuration crawler_configuration = { "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }, "Tables": { "AddOrUpdateBehavior": "MergeNewColumns" } } } configuration_json = json.dumps(crawler_configuration) # Create the crawler with the specified configuration response = glue_client.create_crawler( Name='your-crawler-name', # Replace with your desired crawler name Role='crawler-test-role', # Replace with the ARN of your IAM role for Glue DatabaseName='default', # Replace with your target Glue database name Targets={ 'S3Targets': [ { 'Path': "s3://your-bucket-name/path/", # Replace with your S3 path to the data }, ], # Include other target types like 'JdbcTargets' if needed }, Configuration=configuration_json, # Include other parameters like Schedule, Classifiers, TablePrefix, SchemaChangePolicy, etc., as needed ) print(response)a

Lorsqu'un crawler s'exécute, de nouvelles tables et partitions sont toujours créées, quelle que soit la politique de modification de schéma. Vous pouvez choisir l'une des actions suivantes dans le champ UpdateBehavior de la structure SchemaChangePolicy pour déterminer ce que l'crawler fait lorsqu'il découvre un schéma de table modifié :

  • UPDATE_IN_DATABASE - Mettre à jour le tableaux dans AWS Glue Data Catalog. Ajoutez de nouvelles colonnes, supprimez les colonnes manquantes et modifiez les définitions des colonnes existantes. Supprimez toutes les métadonnées qui ne sont pas définies par l'crawler.

  • LOG – ignorer les modifications et ne pas mettre la table à jour dans Data Catalog.

    Il s'agit du paramètre par défaut pour les analyses incrémentielles.

Vous pouvez également remplacer la structure SchemaChangePolicy à l'aide d'un objet JSON fourni dans le champ Configuration de l'API de l'crawler. Cet objet JSON peut contenir une paire clé-valeur permettant de définir la politique pour ne pas mettre à jour les colonnes existantes et n'ajouter que de nouvelles colonnes. Par exemple, fournissez l'objet JSON suivant sous la forme d'une chaîne :

{ "Version": 1.0, "CrawlerOutput": { "Tables": { "AddOrUpdateBehavior": "MergeNewColumns" } } }

Cette option correspond à l'option Ajouter uniquement de nouvelles colonnes de la console AWS Glue. Elle remplace la structure SchemaChangePolicy pour les tables créées à partir de l'analyse des magasins de données Amazon S3 uniquement. Choisissez cette option si vous souhaitez conserver les métadonnées telles qu'elles existent dans Data Catalog (source vérifiée). Les nouvelles colonnes sont ajoutées au fur et à mesure qu'elles sont rencontrées, types de données imbriqués inclus. Mais les colonnes existantes ne sont pas supprimées, et leur type n'est pas modifié. Si un attribut de table Amazon S3 est modifié de manière significative, marquez la table comme obsolète et enregistrez un avertissement indiquant qu'un attribut incompatible doit être résolu. Cette option n'est pas applicable au Crawler incrémentiel.

Lorsqu'un crawler s'exécute sur un magasin de données analysé précédemment, il peut découvrir des partitions nouvelles ou modifiées. Par défaut, de nouvelles partitions sont ajoutées et des partitions existantes sont mises à jour si elles ont été modifiées. En outre, vous pouvez définir une option de configuration de l'crawler sur InheritFromTable (cette option correspond à l'option Mettre à jour toutes les partitions nouvelles et existantes avec les métadonnées de la table de la console AWS Glue). Lorsque cette option est définie, les partitions héritent des propriétés de métadonnées de leur table parent, telles que leur classification, leur format d'entrée, leur format de sortie, leurs SerDe informations et leur schéma. Les modifications apportées aux propriétés de la table parent sont propagées à ses partitions.

Lorsque cette option de configuration est définie sur un crawler existant, les partitions existantes sont mises à jour de manière à établir la correspondre avec les propriétés de leur table parent lors de la prochaine exécution de l'crawler. Ce comportement est défini dans le champ Configuration de l'API de l'crawler. Par exemple, fournissez l'objet JSON suivant sous la forme d'une chaîne :

{ "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" } } }

Le champ Configuration de l'crawler de l'API peut définir plusieurs options de configuration. Par exemple, pour configurer la sortie de l'crawler pour les tables et les partitions, vous pouvez fournir une représentation de chaîne de l'objet JSON suivant :

{ "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }, "Tables": {"AddOrUpdateBehavior": "MergeNewColumns" } } }

Lorsque l'crawler détecte un objet supprimé dans le magasin de données, vous pouvez choisir l'une des actions suivantes. Le champ DeleteBehavior de la structure SchemaChangePolicy de l'API de l'crawler définit le comportement de l'crawler lorsqu'il détecte un objet supprimé.

  • DELETE_FROM_DATABASE – supprimer les tables et les partitions de Data Catalog.

  • LOG – ignorer la modification. Ne pas mettre à jour Data Catalog. Écrivez un message de journal à la place.

  • DEPRECATE_IN_DATABASE – marquer la table comme obsolète dans Data Catalog. Il s’agit du paramètre par défaut.