View a markdown version of this page

Gestion des métadonnées Iceberg - Amazon SageMaker AI

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.

Gestion des métadonnées Iceberg

Lorsque vous créez un groupe d'entités au format de table Iceberg, Amazon SageMaker Feature Store crée et gère la table Iceberg sous-jacente en votre nom à l'aide des valeurs de configuration par défaut. Vous pouvez configurer les propriétés de la table Iceberg lors de la création d'un groupe d'entités, mettre à jour les propriétés d'un groupe d'entités existant et afficher les propriétés actuellement définies sur le tableau. Ces paramètres vous permettent de contrôler les paramètres de configuration tels que la conservation des instantanés, la gestion des fichiers de métadonnées et le comportement d'écriture afin de gérer la taille globale et les performances de votre table de stockage hors ligne.

Seul un sous-ensemble de propriétés de table Iceberg a été validé pour sa compatibilité avec Feature Store. La configuration de propriétés en dehors de cet ensemble pris en charge ne garantit pas un comportement correct. Pour obtenir la liste complète des propriétés prises en charge, consultezPropriétés Iceberg autorisées.

Prérequis : votre groupe de fonctionnalités doit disposer d'une boutique hors ligne utilisant le format de tableau Iceberg.

Important

Si des propriétés Iceberg non autorisées sont modifiées, Feature Store ne peut pas garantir une compatibilité continue et peut entraîner l'impossibilité d'écrire dans la boutique hors ligne.

IcebergProperties type

Le IcebergProperties type fournit un wrapper validé pour les configurations de propriétés Iceberg, garantissant que toutes les clés appartiennent à l'ensemble autorisé et empêchant les entrées en double.

class IcebergProperties(Base): """Configuration for Iceberg table properties in a Feature Group offline store.""" properties: Optional[Dict[str, str]] = None

Validation des propriétés

Les clés non valides et dupliquées génèrent une erreur lorsqu'elles sont transmises à la fonction de création ou de mise à jour. Vous pouvez éventuellement valider les clés à l'aide de validate_property_keys() cette méthode. Cela est utile lorsque vous ajoutez ou supprimez des propriétés d'un IcebergProperties objet existant.

iceberg_properties = IcebergProperties( # Validates on creation properties={ "write.target-file-size-bytes": "268435456", "write.delete.mode": "merge-on-read", } ) # Add non-allowed property iceberg_properties.properties.update({"write.delete.isolation-level": "Snapshot"}) # Validate again — throws error because of non-allowed property iceberg_properties.validate_property_keys()

Création d'un groupe de fonctionnalités avec les propriétés Iceberg

La FeatureGroupManager.create fonction accepte un iceberg_properties paramètre de typeIcebergProperties. Il crée un groupe d'entités et attend la fin de la création avant de mettre à jour les propriétés Iceberg de la table sous-jacente AWS Glue .

Vous pouvez également créer un appel FeatureGroupcreate, puis transmettre l'objet du groupe d'entités à la FeatureGroupManager classe et à l'appeler update pour éviter tout blocage pendant la fin de la création du groupe d'entités.

fg = FeatureGroupManager.create( # ...other parameters... offline_store_config=OfflineStoreConfig( s3_storage_config=S3StorageConfig(s3_uri="s3://my-bucket/features/"), table_format="Iceberg", # Must use Iceberg table format ), iceberg_properties=IcebergProperties( properties={ "write.target-file-size-bytes": "536870912", "history.expire.min-snapshots-to-keep": "3", } ), )

Mettre à jour les propriétés Iceberg d'un groupe d'entités existant

La update fonction accepte un iceberg_properties paramètre de typeIcebergProperties. Il prend un groupe de fonctionnalités déjà créé, extrait celui AWS Glue Data Catalog de la boutique hors ligne et définit les propriétés Iceberg spécifiées.

fg = FeatureGroupManager.get(feature_group_name="my-feature-group") fg.update( iceberg_properties=IcebergProperties( properties={ "write.target-file-size-bytes": "268435456", "write.delete.mode": "merge-on-read", } ), )

Afficher les propriétés Iceberg sur un groupe de fonctionnalités

La FeatureGroupManager.get fonction accepte un include_iceberg_properties paramètre. Lorsqu'il est défini surTrue, il récupère les propriétés Iceberg qui ont été définies manuellement et font partie de la liste autorisée, et les ajoute au iceberg_properties champ de l'objet renvoyé.

Cela renvoie uniquement les propriétés d'ensemble qui font partie de la liste autorisée. Pour obtenir toutes les propriétés de la AWS Glue table, utilisez directement l' AWS Glue API. Si aucune propriété Iceberg autorisée n'apparaît, elle n'a pas été définie explicitement et utilise sa valeur par défaut.

fg = FeatureGroupManager.get( feature_group_name="my-feature-group", include_iceberg_properties=True, ) print(fg.iceberg_properties.properties) # e.g. {"write.target-file-size-bytes": "536870912"}

Autorisations requises

Assurez-vous que les politiques AmazonSageMakerFeatureStoreAccess et les politiques AmazonSageMakerFullAccess gérées sont associées au rôle IAM que vous utilisez. Gérez votre politique en fonction de votre modèle d'accès.

Propriétés Iceberg autorisées

Le tableau suivant répertorie les propriétés de la table Iceberg qui ont été validées pour être utilisées avec Feature Store. Pour plus d'informations sur ces propriétés, consultez la section Configuration des tables dans la documentation Apache Iceberg.

Propriétés de table Iceberg autorisées
Propriété Valeur par défaut Description
write.metadata.delete-after-commit.enabled false Détermine s'il faut supprimer les plus anciens fichiers de métadonnées des versions suivies après chaque validation de table.
write.metadata.previous-versions-max 100 Le nombre maximum de fichiers de métadonnées de la version précédente à suivre.
history.expire.max-snapshot-age-ms 432000000(5 jours) Âge maximum par défaut des instantanés à conserver sur la table et dans toutes ses branches lors de l'expiration des instantanés.
history.expire.min-snapshots-to-keep 1 Nombre minimum de clichés par défaut à conserver sur la table et dans toutes ses branches lors de l'expiration des instantanés.
history.expire.max-ref-age-ms Long.MAX_VALUE(pour toujours) Pour les références aux instantanés à l'exception de la main branche, l'âge maximum par défaut des références aux instantanés à conserver lors de l'expiration des instantanés. La main succursale n'expire jamais.
write.target-file-size-bytes 536870912(512 Mo) Contrôle la taille des fichiers générés pour cibler environ ce nombre d'octets.
write.delete.target-file-size-bytes 67108864(64 Mo) Contrôle la taille des fichiers supprimés générés pour cibler environ ce nombre d'octets.
write.delete.mode copy-on-write Mode utilisé pour les commandes de suppression : copy-on-write ou merge-on-read (v2 et versions ultérieures).
write.update.mode copy-on-write Mode utilisé pour les commandes de mise à jour : copy-on-write ou merge-on-read (v2 et versions ultérieures).
write.delete.granularity partition Contrôle la granularité des fichiers de suppression générés : partition oufile.
write.parquet.row-group-size-bytes 134217728(128 Mo) Taille du groupe de rangées de parquet.
read.split.target-size 134217728(128 Mo) Taille cible lors de la combinaison de divisions d'entrée de données.
read.split.metadata-target-size 33554432(32 Mo) Taille cible lors de la combinaison de divisions d'entrée de métadonnées.
read.split.open-file-cost 4194304(4 Mo) Coût estimé d'ouverture d'un fichier, utilisé comme pondération minimale lors de la combinaison de divisions.