Supprimer des enregistrements de vos groupes de fonctionnalités - Amazon SageMaker

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.

Supprimer des enregistrements de vos groupes de fonctionnalités

Vous pouvez utiliser l'Amazon SageMaker Feature Store API pour supprimer des enregistrements de vos groupes de fonctionnalités. Un groupe de fonctionnalités est un objet qui contient vos données d'apprentissage automatique (ML), dans lequel les colonnes de vos données sont décrites par des entités et vos données sont contenues dans des enregistrements. Un enregistrement contient des valeurs pour des entités associées à un identifiant d'enregistrement spécifique.

Il existe deux configurations de stockage pour vos groupes de fonctionnalités : boutique en ligne et boutique hors ligne. La boutique en ligne ne conserve que l'heure du dernier événement et est généralement utilisée pour la recherche en temps réel pour l'inférence ML. Le magasin hors ligne conserve tous les enregistrements et agit comme une base de données historique. Il est généralement utilisé pour l'exploration des fonctionnalités, l'apprentissage automatique et l'inférence par lots.

Pour plus d'informations sur les concepts de Feature Store, consultez Schémas d'ingestion.

Il existe deux méthodes pour supprimer des enregistrements de vos groupes de fonctionnalités, et le comportement varie en fonction de la configuration de stockage. Dans les rubriques suivantes, nous allons décrire comment supprimer de manière logicielle et définitive des enregistrements des boutiques en ligne et hors ligne et nous fournirons des exemples.

Supprimer des enregistrements de la boutique en ligne

Vous pouvez supprimer automatiquement ou définitivement un enregistrement de la boutique en ligne à l'DeleteRecordAPIaide du paramètre de DeletionMode demande pour spécifier SoftDelete (par défaut) ouHardDelete. Pour plus d'informations à ce DeleteRecord API sujet, consultez DeleteRecordle manuel Amazon SageMaker API Reference.

Avec la boutique en ligne :

  • Lorsque vous supprimez progressivement (par défaut), l'enregistrement n'est plus récupérable par GetRecord ou BatchGetRecord et les valeurs des colonnes d'entités sont définies surnull, à l'exception des valeurs de EventTime fonction RecordIdentifer et.

  • Lorsque vous effectuez une suppression définitive, l'enregistrement est complètement supprimé de la boutique en ligne.

Dans les deux cas, Feature Store ajoute le marqueur d'enregistrement supprimé auOfflineStore. Le marqueur d'enregistrement supprimé est un enregistrement RecordIdentifer identique à l'original, mais dont la is_deleted valeur est définie surTrue, EventTime définie sur l'entrée EventTime de suppression et les autres valeurs de fonction définies surnull.

Notez que le EventTime paramètre spécifié dans DeleteRecord doit être défini plus tard que celui EventTime de l'enregistrement existant dans OnlineStore le même formatRecordIdentifer. Si ce n'est pas le cas, la suppression n'a pas lieu :

  • En SoftDelete effet, l'enregistrement existant (non supprimé) reste dans leOnlineStore, bien que le marqueur de suppression d'enregistrement soit toujours écrit dans leOfflineStore.

  • HardDeleterenvoie EventTime : 400 ValidationException pour indiquer que l'opération de suppression a échoué. Aucun marqueur de suppression d'enregistrement n'est écrit sur leOfflineStore.

Les exemples suivants utilisent l'delete_recordopération SDK for Python (Boto3) pour supprimer un enregistrement d'un groupe de fonctionnalités. Pour supprimer un enregistrement d'un groupe de fonctionnalités, vous devez :

  • Nom du groupe de fonctionnalités (feature-group-name)

  • Enregistrer la valeur de l'identifiant sous forme de chaîne (record-identifier-value)

  • Heure de l'événement de suppression (deletion-event-time)

    L'heure de l'événement de suppression doit être ultérieure à l'heure de l'événement de l'enregistrement que vous souhaitez supprimer.

Exemple de suppression logicielle dans une boutique en ligne

Pour une suppression progressive, vous devez utiliser le DeleteRecord API et pouvez utiliser la valeur par défaut DeletionMode ou DeletionMode définir la valeur surSoftDelete.

import boto3 client = boto3.client('sagemaker-featurestore-runtime') client.delete_record( FeatureGroupName='feature-group-name', RecordIdentifierValueAsString='record-identifier-value', EventTime='deletion-event-time', TargetStores=[ 'OnlineStore', ], DeletionMode='SoftDelete' )

Exemple de suppression définitive dans une boutique en ligne

Pour une suppression définitive, vous devez utiliser le DeleteRecord API et régler DeletionMode surHardDelete.

import boto3 client = boto3.client('sagemaker-featurestore-runtime') client.delete_record( FeatureGroupName='feature-group-name', RecordIdentifierValueAsString='record-identifier-value', EventTime='deletion-event-timestamp', TargetStores=[ 'OnlineStore', ], DeletionMode='HardDelete' )

Supprimer des enregistrements du magasin hors ligne

Avec Amazon SageMaker Feature Store, vous pouvez supprimer de manière logicielle et définitive un enregistrement du format de tableau OfflineStore Iceberg. Avec le format de tableau OfflineStore Iceberg :

  • Lorsque vous supprimez progressivement un enregistrement, la dernière version du fichier de table Iceberg ne contient pas l'enregistrement, mais les versions précédentes contiennent toujours l'enregistrement et sont accessibles par le biais du voyage dans le temps. Pour plus d'informations sur le voyage dans le temps, voir Interroger les données de la table Iceberg et effectuer un voyage dans le temps dans le guide de l'utilisateur d'Athena.

  • Lorsque vous supprimez définitivement un enregistrement, vous supprimez les versions précédentes de la table Iceberg qui le contient. Dans ce cas, vous devez spécifier les versions de la table Iceberg que vous souhaitez supprimer.

Obtenez le nom de votre table Iceberg

Pour effectuer une suppression logicielle ou matérielle de votre table OfflineStore Iceberg, vous devez obtenir le nom de votre table Iceberg,. iceberg-table-name Les instructions suivantes supposent que vous avez déjà utilisé Feature Store pour créer un groupe de fonctionnalités à l'aide de la configuration de stockage du magasin hors ligne utilisant le format de table Iceberg, avec DisableGlueTableCreation = False (par défaut). Pour plus d'informations sur la création de groupes de fonctionnalités, consultezCommencez avec Amazon SageMaker Feature Store.

Pour obtenir votreiceberg-table-name, utilisez le DescribeFeatureGroupAPIpour obtenir DataCatalogConfig. Il contient les métadonnées de la table Glue qui sert de catalogue de données pour leOfflineStore. L'TableNameintérieur DataCatalogConfig est le vôtreiceberg-table-name.

Exemple de suppression logicielle et matérielle de la boutique hors ligne Amazon Athena

Les instructions suivantes utilisent Amazon Athena pour supprimer progressivement puis définitivement un enregistrement de la table OfflineStore Iceberg. Cela suppose que l'enregistrement que vous souhaitez supprimer OfflineStore est un marqueur d'enregistrement supprimé. Pour plus d'informations sur le marqueur d'enregistrement supprimé dans votreOfflineStore, consultezSupprimer des enregistrements de la boutique en ligne.

  1. Obtenez le nom de votre table Iceberg,iceberg-table-name. Pour plus d'informations sur la façon d'obtenir le nom de votre table Iceberg, consultezObtenez le nom de votre table Iceberg.

  2. Exécutez la DELETE commande pour supprimer progressivement les enregistrements duOfflineStore, de telle sorte que la dernière version (ou capture instantanée) de la table Iceberg ne contienne pas les enregistrements. L'exemple suivant supprime les enregistrements où ils is_deleted se trouvent 'True' et les versions précédentes de ces enregistrements au moment de l'événement. Vous pouvez ajouter des conditions supplémentaires basées sur d'autres fonctionnalités pour limiter la suppression. Pour plus d'informations sur l'utilisation DELETE d'Athena, consultez le guide de DELETE l'utilisateur d'Athena.

    DELETE FROM iceberg-table-name WHERE record-id-feature-name IS IN ( SELECT record-id-feature-name FROM iceberg-table-name WHERE is_deleted = 'True')

    Les enregistrements supprimés par logiciel peuvent toujours être consultés dans les versions précédentes des fichiers en effectuant un voyage dans le temps. Pour plus d'informations sur le voyage dans le temps, voir Interroger les données de la table Iceberg et effectuer un voyage dans le temps dans le guide de l'utilisateur d'Athena.

  3. Supprimez l'enregistrement des versions précédentes de vos tables Iceberg pour le supprimer définitivement de OfflineStore :

    1. Exécutez la OPTIMIZE commande pour réécrire les fichiers de données dans une mise en page plus optimisée, en fonction de leur taille et du nombre de fichiers de suppression associés. Pour plus d'informations sur l'optimisation des tables Iceberg et de la syntaxe, consultez la section Optimisation des tables Iceberg dans le guide de l'utilisateur d'Athena.

      OPTIMIZE iceberg-table-name REWRITE DATA USING BIN_PACK
    2. (Facultatif, ne doit être exécuté qu'une seule fois) Exécutez la ALTER TABLE commande pour modifier les valeurs du jeu de tables Iceberg et définissez le moment où les versions précédentes des fichiers doivent être définitivement supprimées conformément à vos spécifications. Cela peut être fait en attribuant des valeurs à vacuum_min_snapshots_to_keep et des vacuum_max_snapshot_age_seconds propriétés. Pour plus d'informations sur la modification des propriétés de votre ensemble de tables Iceberg, consultez le guide ALTERTABLESETPROPERTIESde l'utilisateur d'Athena. Pour plus d'informations sur les paires clé-valeur des propriétés des tables Iceberg, consultez la section Propriétés des tables dans le guide de l'utilisateur d'Athena.

      ALTER TABLE iceberg-table-name SET TBLPROPERTIES ( 'vacuum_min_snapshots_to_keep'='your-specified-value', 'vacuum_max_snapshot_age_seconds'='your-specified-value' )
    3. Exécutez la VACUUM commande pour supprimer les fichiers de données inutiles pour vos tables Iceberg, non référencés par la version actuelle. La VACUUM commande doit être exécutée une fois que l'enregistrement supprimé n'est plus référencé dans l'instantané actuel. Par exemple, vacuum_max_snapshot_age_seconds après la suppression. Pour plus d'informations sur VACUUM Athena et la syntaxe, consultez. VACUUM

      VACUUM iceberg-table-name

Exemple de suppression logicielle et matérielle d'un magasin hors ligne Apache Spark

Pour supprimer définitivement un enregistrement de la table OfflineStore Iceberg à l'aide d'Apache Spark, vous pouvez suivre les mêmes instructions que Exemple de suppression logicielle et matérielle de la boutique hors ligne Amazon Athena ci-dessus, mais en utilisant les procédures Spark. Pour une liste complète des procédures, consultez les procédures Spark dans la documentation d'Apache Iceberg.

  • Lorsque vous effectuez une suppression progressive dans OfflineStore : au lieu d'utiliser la DELETE commande dans Athena, utilisez la DELETE FROMcommande dans Apache Spark.

  • Pour supprimer l'enregistrement des versions précédentes de vos tables Iceberg, supprimez définitivement l'enregistrement de OfflineStore :

    • Lorsque vous modifiez la configuration de votre table Iceberg : au lieu d'utiliser la ALTER TABLE commande d'Athena, expire_snapshotsutilisez la procédure.

    • Pour supprimer les fichiers de données inutiles de vos tables Iceberg : au lieu d'utiliser la VACUUM commande dans Athena, suivez la procédure. remove_orphan_files