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 en utilisant les valeurs de configuration par défaut. Vous pouvez configurer les propriétés de la table Iceberg lors de la création du 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 la table. 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 et les performances globales de votre table de stockage hors ligne.
Seul un sous-ensemble des propriétés des tables Iceberg a été validé pour assurer la 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'un magasin hors ligne utilisant le format de table Iceberg.
Important
Si des propriétés Iceberg non autorisées sont modifiées, Feature Store ne peut garantir une compatibilité continue et peut entraîner l'impossibilité d'écrire dans le magasin 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 saisies 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 lors de l'ajout ou de la suppression de propriétés dans 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 d'entité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 que la création soit terminée avant de mettre à jour les propriétés Iceberg sur 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 le blocage pendant que le groupe d'entités termine sa création.
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 d'Iceberg sur 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 le AWS Glue Data Catalog magasin 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 d'Iceberg sur un groupe d'entité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 qui 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éfinies qui font partie de la liste autorisée. Pour obtenir toutes les propriétés des AWS Glue tables, 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 AmazonSageMakerFullAccessgérées AmazonSageMakerFeatureStoreAccesset les politiques 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 des tables Iceberg qui ont été validées pour une utilisation avec Feature Store. Pour plus d'informations sur ces propriétés, consultez la section Configuration des tables
| 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 de la version suivie après chaque validation de table. |
write.metadata.previous-versions-max |
100 |
Le nombre maximal de fichiers de métadonnées des versions précédentes à suivre. |
history.expire.max-snapshot-age-ms |
432000000(5 jours) |
Âge maximal par défaut des instantanés à conserver sur la table et dans toutes ses branches lorsque les instantanés expirent. |
history.expire.min-snapshots-to-keep |
1 |
Nombre minimal d'instantanés par défaut à conserver sur la table et dans toutes ses branches lorsque les instantanés expirent. |
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, âge maximal par défaut des références aux instantanés à conserver lors de l'expiration des instantanés. La main branche 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 de suppression 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) |
Le coût estimé d'ouverture d'un fichier, utilisé comme pondération minimale lors de la combinaison de fractionnements. |