Magasins de fonctionnalités en ligne Databricks
Les Magasins de fonctionnalités en ligne Databricks sont une solution haute performance et scalable pour servir des données de fonctionnalités aux applications en ligne et aux modèles de machine learning en temps réel. Propulsés par Databricks Lakebase, les Magasins de fonctionnalités en ligne offrent un accès à faible latence aux données de fonctionnalités à grande échelle tout en maintenant la cohérence avec vos tables de fonctionnalités hors ligne.
Les principaux cas d'usage des magasins de fonctionnalités en ligne incluent :
- Service de fonctionnalités pour les applications en temps réel telles que les systèmes de recommandation, la détection de fraude et les moteurs de personnalisation à l'aide des Endpoints Feature Serving.
- Recherche automatique de fonctionnalités pour l'inférence en temps réel dans les endpoints de service de modèle.
Les nouveaux magasins de fonctionnalités en ligne sont désormais créés en tant que projets Lakebase Autoscaling. Pour plus de détails et de différences, consultez l'unification de Lakebase sur l'Autoscaling.
Exigences
Databricks Online Magasins de fonctionnalités nécessite Databricks Runtime 16.4 LTS ML ou version ultérieure. Vous pouvez également utiliser le calcul Serverless.
Pour utiliser les magasins de fonctionnalités en ligne Databricks, vous devez d'abord installer le package. Les lignes de code suivantes doivent être exécutées chaque fois qu'un Notebook est exécuté :
%pip install databricks-feature-engineering>=0.13.0
dbutils.library.restartPython()
Créer une boutique en ligne
Lorsque vous créez un magasin en ligne, vous provisionnez une infrastructure gérée hautement disponible pour le Feature Serving en temps réel. L'API create_online_store crée une instance d'autoscaling Lakebase. Pour en savoir plus sur l'autoscaling Lakebase, consultez Lakebase Postgres.
Pour gérer les coûts, supprimez les magasins en ligne Lakebase Provisioned lorsqu'ils ne sont pas utilisés pour le développement et les tests.
Pour créer un nouveau Magasin de fonctionnalités en ligne :
from databricks.feature_engineering import FeatureEngineeringClient
# Initialize the client
fe = FeatureEngineeringClient()
# Create an online store with specified capacity
fe.create_online_store(
name="my-online-store", # maximum of 63 bytes
capacity="CU_2" # Valid options: "CU_1", "CU_2", "CU_4", "CU_8"
)
Le paramètre capacity contrôle la quantité de compute que votre boutique en ligne peut utiliser. Sa valeur fait référence à la capacité Lakebase provisionnée, comme décrit dans Taille du compute.
Pour plus d'information sur les autorisations des instances Lakebase Autoscaling, consultez Accorder les autorisations de projet.
Pour des informations sur les options de capacité des instances Lakebase de provisionnement, consultez Gérer la capacité de l'instance.
Chiffrement avec des clés gérées par le client
Les magasins de fonctionnalités en ligne prennent en charge le chiffrement au repos avec une clé gérée par le client (CMK) grâce au support sous-jacent de Lakebase Autoscaling. Aucune configuration Lakebase ou de Magasin de fonctionnalités n'est requise ; la CMK s'applique automatiquement pour les workspaces concernés.
CMK s'applique automatiquement lorsque toutes les conditions suivantes sont remplies :
- Le Workspace dispose d'une clé gérée par le client configurée pour les services gérés. Consulter les clés gérées par le client pour Lakebase.
- Le magasin de fonctionnalités en ligne est soutenu par un projet d'autoscaling Lakebase. Tous les magasins de fonctionnalités en ligne créés avec
fe.create_online_storeaprès le 23 mars 2026 utilisent Lakebase Autoscaling. - Le projet Lakebase sous-jacent a été créé après que la prise en charge de CMK est devenue disponible dans votre région. Les projets Lakebase créés avant cela ne sont pas chiffrés avec une CMK, même si le workspace en active une ultérieurement.
Le projet Lakebase qui prend en charge un magasin de fonctionnalités en ligne porte le même nom que le magasin en ligne. Pour le trouver, cliquez sur le sélecteur d'applications dans le coin supérieur droit de votre Workspace pour ouvrir l'application Lakebase et localiser le projet portant ce nom. Pour confirmer que le magasin est chiffré avec votre CMK, vérifiez la carte d'état Clés gérées par le client sur ce projet. Consultez Vérifier l'état du chiffrement.
Gérer les boutiques en ligne
Le code suivant montre comment récupérer les boutiques en ligne :
# List all accessible online stores
stores = fe.list_online_stores()
for store in stores:
print(f"Store: {store.name}, State: {store.state}, Capacity: {store.capacity}")
# Get information about an existing online store
store = fe.get_online_store(name="my-online-store")
if store:
print(f"Store: {store.name}, State: {store.state}, Capacity: {store.capacity}")
Si vous avez créé une boutique en ligne à l'aide de fe.create_online_store, vous pouvez la mettre à jour à l'aide de fe.update_online_store:
# Update the capacity of an online store
# Note: this does not work for an Autoscaling instance that was created using the projects API or the UI
updated_store = fe.update_online_store(
name="my-online-store",
capacity="CU_4" # Upgrade to higher capacity
)
Ajouter des réplicas en lecture à un magasin en ligne
Lors de la création ou de la mise à jour d'un Magasin de fonctionnalités en ligne, vous pouvez ajouter des réplicas en lecture au Magasin en ligne en spécifiant le parameter read_replica_count. Le trafic en lecture est automatiquement réparti entre les réplicas en lecture, réduisant la latence et améliorant les performances et l'évolutivité pour les charges de travail à high concurrency.
Vous ne pouvez pas ajouter de réplicas en lecture à un projet Lakebase Autoscaling qui a été créé à l'aide de l'API ou de l'interface utilisateur.
Publier une table de fonctionnalités vers un magasin en ligne
Une fois que votre magasin en ligne est à l'état DISPONIBLE , vous pouvez publier des tables de fonctionnalités pour les rendre accessibles à faible latence. L'API publish_table synchronise les données de votre table de fonctionnalités hors ligne vers le magasin en ligne créé à l'aide de l'API create_online_store. Examinez le tableau ci-dessous pour vous assurer que votre table hors ligne source a été créée correctement pour le cas d'utilisation en temps réel.
Cas d'usage | Créez la table de fonctionnalités hors ligne à l'aide de cette méthode |
|---|---|
Seules les valeurs de fonctionnalité les plus récentes pour chaque ID d'entité sont disponibles dans le magasin en ligne pour les applications en temps réel. Plusieurs lignes avec la même valeur de clé primaire mais des valeurs de clé de série temporelle différentes peuvent exister dans la source de données hors ligne, et seront dédupliquées dans le pipeline de publication. Ce cas est le plus fréquemment utilisé pour les Endpoint de Model Serving ou Feature Serving en ligne. | |
Les dernières et toutes les précédentes valeurs de fonctionnalités de séries temporelles provenant de la table hors ligne sont disponibles dans le magasin en ligne pour l'accès par les applications en temps réel. Toutes les lignes de la table source (hors ligne) sont publiées sans déduplication. Ceci est rarement utilisé, mais peut être nécessaire lorsque les Endpoints query les fonctionnalités par ID d'entité et date/Timestamp exacts pour la vérification des données ou le back-testing. Pour utiliser une colonne |
Prérequis pour la publication vers les boutiques en ligne
Toutes les tables de fonctionnalités (avec ou sans série temporelle) doivent satisfaire à ces exigences avant la publication :
- Contrainte de clé primaire : Requise pour la publication dans le magasin en ligne
- Clés primaires non nullables : les colonnes de clé primaire ne peuvent pas contenir de valeurs NULL
- Flux de modification des données activé : requis pour les modes de publication
CONTINUOUSetTRIGGERED. Reportez-vous à Utiliser le flux de données de modification pour savoir comment activer le flux de données de modification de la table Delta, et à Modes de publication pour une discussion sur les modes de publication.
-- Enable CDF if not already enabled
ALTER TABLE catalog.schema.your_feature_table
SET TBLPROPERTIES ('delta.enableChangeDataFeed' = 'true');
-- Ensure primary key columns are not nullable
ALTER TABLE catalog.schema.your_feature_table
ALTER COLUMN user_id SET NOT NULL;
Publier une table de fonctionnalités
Pour publier une table de fonctionnalités dans un magasin en ligne :
from databricks.ml_features.entities.online_store import DatabricksOnlineStore
# Get the online store instance
# For Lakebase Autoscaling projects creating using the Lakebase API or UI,
# `name` is the last part of the resouce name: projects/{online_store_name}
online_store = fe.get_online_store(name="my-online-store")
# Publish the feature table to the online store
fe.publish_table(
online_store=online_store,
source_table_name="catalog_name.schema_name.feature_table_name",
# for online_table_name, the catalog name, schema name, and table name each are limited to a maximum of 63 bytes
online_table_name="catalog_name.schema_name.online_feature_table_name",
# `publish_mode` argument is optional and defaults to "TRIGGERED" mode if not specified
)
L'opération publish_table effectue les opérations suivantes :
- Créez une table dans le magasin en ligne si elle n’existe pas.
- Synchroniser les données de fonctionnalité de la table de fonctionnalités hors ligne vers le magasin en ligne.
- Mettez en place l'infrastructure nécessaire pour maintenir le magasin en ligne synchronisé avec la table hors ligne.
publish_table utilise toujours la Branch default du projet de dimensionnement automatique Lakebase.
Modes de publication
Le parameter publish_mode détermine comment et quand la table en ligne est mise à jour avec les modifications de la table de fonctionnalités hors ligne.
Consultez Explication des modes de synchronisation pour plus de détails sur les modes pris en charge.
Les modes pris en charge sont résumés ci-dessous :
Mode | Description |
|---|---|
| default. Met à jour de manière incrémentale la table en ligne avec les modifications de la table hors ligne à l'aide de l'API ou selon un calendrier. Options to Trigger the synchronisation des données périodiquement :
Ce mode nécessite que le flux de données de modification soit activé sur la table hors ligne. Consultez les prérequis pour la publication vers les boutiques en ligne. |
| La table en ligne est configurée avec un pipeline de streaming pour mettre à jour immédiatement le magasin en ligne dès que de nouvelles données sont écrites dans la table de fonctionnalités hors ligne. |
| Effectue une synchronisation ponctuelle qui copie toutes les données de la table source vers le magasin en ligne. Ce mode est efficace lorsqu'il y a un grand nombre de mises à jour sur les lignes existantes entre deux opérations de synchronisation. |
Le paramètre publish_mode remplace le paramètre streaming à partir de la version v0.13.0.1 et des versions antérieures. Pour la rétrocompatibilité, si streaming=True est passé, cela équivaut à définir publish_mode="CONTINUOUS".
Supprimer une table en ligne
Pour supprimer une table en ligne, utilisez le SDK Databricks :
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.feature_store.delete_online_table(online_table_name="catalog_name.schema_name.online_feature_table_name")
C’est la seule méthode recommandée pour supprimer une table en ligne. Il supprime la table d’Unity Catalog et de la base de données. D’autres méthodes, telles que la commande Databricks SQL DROP TABLE ou la commande du SDK Python pour supprimer une table synchronisée, ne suppriment pas la table du stockage de base de données sous-jacent.
Explorer et interroger les fonctionnalités en ligne
Une fois que l'état de votre table publiée s'affiche comme « AVAILABLE », vous pouvez explorer et interroger les données de fonctionnalité de plusieurs manières :
Interface utilisateur d'Unity Catalog : accédez à la table en ligne dans Unity Catalog pour afficher les exemples de données et explorer le schéma directement dans l'interface utilisateur. Cela constitue un moyen pratique d'inspecter vos données de fonctionnalités et de vérifier que le processus de publication s'est terminé avec succès.
SQL Editor : Pour des requêtes et une exploration de données plus avancées, vous pouvez utiliser l'éditeur SQL pour exécuter des requêtes PostgreSQL sur vos tables de fonctionnalités en ligne. Cela vous permet d'effectuer des requêtes complexes, des jointures et des analyses sur vos données de fonctionnalités. Pour des instructions détaillées sur l'utilisation de l'éditeur SQL avec les magasins en ligne, voir Query depuis l'éditeur SQL Lakebase.
Utilisez les fonctionnalités en ligne dans les applications en temps réel
Pour servir des fonctionnalités à des applications et services en temps réel, créez un endpoint de Feature Serving. Voir les endpoints de Feature Serving.
Les modèles qui sont entraînés à l'aide de fonctionnalités de Databricks suivent automatiquement la traçabilité jusqu'aux fonctionnalités sur lesquelles ils ont été entraînés. Lorsqu'ils sont déployés en tant qu'Endpoints, ces modèles utilisent Unity Catalog pour trouver les fonctionnalités appropriées dans les magasins en ligne. Pour plus de détails, consultez Utiliser les fonctionnalités dans les workflows en ligne.
Supprimer une boutique en ligne
Pour supprimer une boutique en ligne :
fe.delete_online_store(name="my-online-store")
La suppression d'une table publiée en ligne peut entraîner des défaillances imprévues dans les dépendances en aval. Avant de supprimer une table, vous devez vous assurer que ses fonctionnalités en ligne ne sont plus utilisées par les Endpoint de service de modèles ou de Feature Serving.
Meilleures pratiques d'optimisation des coûts
- **Réutiliser les boutiques en ligne** : vous pouvez publier plusieurs tables de fonctionnalités vers une seule boutique en ligne. Pour les scénarios de développement, de test et de formation, nous recommandons de partager une seule boutique en ligne entre plusieurs projets ou utilisateurs plutôt que de créer des boutiques distinctes.
- **Capacité adaptée** : start avec CU_2 pour les tests et n'augmentez ou ne réduisez la capacité qu'en fonction des performances et des coûts.
- Supprimer les boutiques en ligne inutilisées : Les boutiques en ligne entraînent des coûts en continu. Supprimez les boutiques en ligne qui ne sont plus nécessaires.
Limitations
- La spécification d'une table en ligne spécifique n'est pas prise en charge. Lorsqu'une table de fonctionnalités est publiée sur plusieurs tables en ligne, les services de modèles et les Endpoint de Feature Serving se résolvent toujours en la plus ancienne table en ligne, en fonction du Timestamp de création.
- Un Magasin de fonctionnalités en ligne prend en charge jusqu'à 3 réplicas en lecture (4 instances de compute au total, y compris le primaire). Les réplicas en lecture déchargent le trafic de lecture du primaire et assurent une haute disponibilité en prenant le relais si le primaire tombe en panne.
- Les paramètres suivants ne sont pas pris en charge lors de la publication vers un magasin de fonctionnalités en ligne Databricks :
filter_condition,checkpoint_location,mode,triggeretfeatures. - Seules les tables de fonctionnalités dans Unity Catalog sont prises en charge.
- Le seul mode de publication pris en charge est « Merge ».
- La mise à l'échelle vers zéro de Lakebase n'est pas prise en charge.
- Les endpoints Feature Serving et Model Serving qui recherchent des fonctionnalités à partir de plusieurs magasins de fonctionnalités en ligne continuent de fonctionner s'ils existent déjà, mais vous ne pouvez pas créer de nouveaux endpoints de ce type sur les instances d'autoscaling Lakebase.
- Les instances de mise à l'échelle automatique créées à l'aide de l'API des projets ou de l'interface utilisateur n'utilisent pas les champs suivants :
creator,read_replica_countetcapacity. - Vous ne pouvez pas mettre à jour une instance d'Autoscaling qui a été créée à l'aide de l'API des projets ou de l'interface utilisateur.
- Les clés gérées par le client (CMK) s'appliquent uniquement aux magasins de fonctionnalités en ligne créés après que les CMK sont devenues disponibles dans la région. Consultez Chiffrement avec des clés gérées par le client.
Dépannage
Message d'erreur : Skipping publishing to online table '...' because the feature sync pipeline is already running.
Cette erreur se produit si plusieurs Notebooks ou Jobs tentent de publier sur une table en ligne en même temps. Une seule opération de synchronisation est autorisée par table en ligne à la fois afin d'éviter les conflits de données.
Databricks recommande de concevoir vos workflows pour utiliser une seule commande publish_table, par exemple une seule tâche à la fin d'un Job. Si vos workflows ne peuvent pas être coordonnés de cette manière, utilisez get_status() pour attendre que les autres commandes de publication aient terminé la synchronisation avant de déclencher une nouvelle publication.
Exemple de Notebook
Le notebook suivant montre un exemple de configuration et d'accès à un magasin de fonctionnalités Databricks Online à l'aide de Databricks Lakebase.
Magasin de fonctionnalités en ligne avec le notebook Lakebase
Ressources supplémentaires
-
En savoir plus sur **l'ingénierie des fonctionnalités dans Databricks**.
-
Explorez la gouvernance des données et le lignage dans Unity Catalog.
-
Comprenez l'architecture et les fonctionnalités de Lakebase.