Magazyny funkcji online usługi Databricks

Sklepy cech online Databricks to wysoce wydajne, skalowalne rozwiązanie do dostarczania danych cech aplikacjom online i modelom uczenia maszynowego w czasie rzeczywistym. Obsługiwane przez Databricks Lakebase internetowe magazyny funkcji zapewniają szybki dostęp do danych funkcji na dużą skalę przy jednoczesnym zachowaniu spójności z tabelami funkcji trybu offline.

Główne przypadki użycia sklepów funkcji online obejmują:

Nowe sklepy funkcji online są teraz tworzone jako projekty skalowania automatycznego w usłudze Lakebase. Aby uzyskać szczegółowe informacje i różnice, zobacz Łączenie bazy danych Lakebase w przypadku skalowania automatycznego.

Requirements

Magazyny funkcji online usługi Databricks wymagają środowiska Databricks Runtime 16. 4 LTS ML lub nowszego. Możesz również używać bezserwerowych obliczeń.

Aby korzystać ze sklepów funkcji online usługi Databricks, należy najpierw zainstalować pakiet. Po każdym uruchomieniu notesu należy wykonać następujące wiersze kodu:

%pip install databricks-feature-engineering>=0.13.0
dbutils.library.restartPython()

Tworzenie sklepu online

Podczas tworzenia sklepu online aprowizujesz infrastrukturę zarządzaną o wysokiej dostępności na potrzeby obsługi funkcji w czasie rzeczywistym. API create_online_store tworzy instancję autoskalowania Lakebase. Aby uzyskać szczegółowe informacje o skalowaniu automatycznym w usłudze Lakebase, zobacz Lakebase Postgres.

Aby zarządzać kosztami, usuń sklepy online , gdy nie są używane na potrzeby programowania i testowania.

Aby utworzyć nowy sklep funkcji online:

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"
)

Ustawienie capacity określa, ile mocy obliczeniowej może używać sklep online. Jego wartością jest jednostka obliczeniowa Lakebase (CU). Aby poznać dostępne rozmiary obliczeniowe i to, co zawiera CU, zobacz Dostępne rozmiary obliczeniowe.

Aby uzyskać informacje na temat uprawnień dla wystąpień skalowania automatycznego w usłudze Lakebase, zobacz Udzielanie uprawnień projektu.

Szyfrowanie przy użyciu kluczy zarządzanych przez klienta

Magazyny funkcji online obsługują szyfrowanie danych przechowywanych przy użyciu klucza zarządzanego przez klienta (CMK) dzięki bazowej obsłudze zapewnianej przez Lakebase Autoscaling. Nie jest wymagana konfiguracja Lakebase ani Feature Store; CMK jest stosowany automatycznie w odpowiednich obszarach roboczych.

Klucz CMK jest stosowany automatycznie, gdy spełnione są wszystkie poniższe warunki:

  • Obszar roboczy ma skonfigurowany klucz zarządzany przez klienta dla usług zarządzanych. Zobacz Klucze zarządzane przez klienta dla usługi Lakebase.
  • Magazyn cech online opiera się na projekcie automatycznego skalowania Lakebase. Wszystkie internetowe magazyny funkcji utworzone za pomocą fe.create_online_store po 23 marca 2026 r. korzystają z Lakebase Autoscaling.
  • Projekt zaplecza Lakebase został utworzony po udostępnieniu obsługi CMK w Twoim regionie. Projekty Lakebase utworzone przed tym momentem nie są szyfrowane za pomocą klucza zarządzanego przez klienta (CMK), nawet jeśli taki klucz zostanie później włączony w obszarze roboczym.

Projekt Lakebase, stanowiący zaplecze dla internetowego magazynu funkcji, ma tę samą nazwę co sklep internetowy. Aby ją znaleźć, kliknij ikonę Aplikacja. Przełącznik aplikacji w prawym górnym rogu obszaru roboczego, aby otworzyć aplikację Lakebase i zlokalizować projekt o tej nazwie. Aby potwierdzić, że magazyn danych jest zaszyfrowany przy użyciu Twojego klucza CMK, sprawdź kartę stanu Customer-managed keys w tym projekcie. Zobacz Sprawdzanie stanu szyfrowania.

Zarządzanie sklepami online

Poniższy kod przedstawia sposób pobierania sklepów online:

# 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}")

Jeśli utworzono sklep online przy użyciu fe.create_online_store, możesz go zaktualizować przy użyciu 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
)

Dodaj repliki do odczytu do sklepu internetowego

Przy tworzeniu lub aktualizowaniu internetowego magazynu funkcji można dodawać repliki do odczytu do magazynu online, określając parametr read_replica_count. Ruch związany z odczytem jest automatycznie dystrybuowany między replikami odczytu, zmniejszając opóźnienia i zwiększając wydajność oraz skalowalność obciążeń o wysokiej współbieżności.

Nie można dodać replik do odczytu do projektu skalowania automatycznego usługi Lakebase utworzonego przy użyciu interfejsu API lub interfejsu użytkownika.

Publikowanie tabeli funkcji w sklepie online

Gdy sklep online znajduje się w stanie AVAILABLE, możesz opublikować tabele funkcji, aby udostępnić je do uzyskania dostępu o niskich opóźnieniach. Interfejs publish_table API synchronizuje dane z tabeli funkcji offline z magazynem online utworzonym przy użyciu create_online_store interfejsu API. Zapoznaj się z poniższą tabelą, aby upewnić się, że źródłowa tabela offline została utworzona poprawnie dla przypadku użycia w czasie rzeczywistym.

Przypadek użycia Utwórz tabelę funkcji offline przy użyciu tej metody
Tylko najnowsze wartości funkcji dla każdego identyfikatora jednostki są dostępne w sklepie online dla aplikacji czasu rzeczywistego. Wiele wierszy o tej samej wartości klucza podstawowego z różnymi wartościami klucza szeregów czasowych może występować w offline'owym źródle danych i zostanie zdeduplikowane w potoku publikowania.
Ten przypadek jest najczęściej używany w przypadku modelu online lub funkcji obsługującej punkty końcowe.
Tworzenie tabeli z oznaczeniem szeregów czasowych
Najnowsze i wszystkie poprzednie wartości funkcji szeregów czasowych z tabeli offline są dostępne w sklepie online w celu uzyskania dostępu przez aplikacje czasu rzeczywistego.
Wszystkie wiersze z tabeli źródłowej (offline) są publikowane bez deduplikacji. Stosuj to tylko wtedy, gdy punkt końcowy musi pobrać konkretną historyczną wartość cechy na podstawie identyfikatora jednostki oraz dokładnej daty/czasu — na przykład, aby zweryfikować lub przetestować przewidywania względem dokładnych wartości cech obsługiwanych w przeszłości. Jest to wyszukiwanie dokładnego dopasowania dla klucza podstawowego typu string, a nie zapytanie według stanu na dany moment ani zapytanie o zakres czasowy. Aby użyć kolumny DATE lub TIMESTAMP jako zwykłego klucza odnośnika (bez semantyki szeregów czasowych), zmień typ kolumny na STRING.
Tworzenie tabeli bez oznaczenia szeregów czasowych

Wymagania wstępne dotyczące publikowania w sklepach online

Wszystkie tabele funkcji (z szeregami czasowymi lub bez nich) muszą spełniać następujące wymagania przed opublikowaniem:

  1. Ograniczenie klucza podstawowego: wymagane do publikowania w sklepie online
  2. Klucze podstawowe bez wartości null: kolumny klucza podstawowego nie mogą zawierać wartości NULL
  3. Włączony zestaw danych zmian: wymagany dla trybów CONTINUOUS i publikowania TRIGGERED. Informacje o tym, jak włączyć strumień danych o zmianach dla tabel Delta, można znaleźć w artykule Use change data feed, a omówienie trybów publikowania — w artykule Publish modes.
-- 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;

Publikowanie tabeli funkcji

Aby opublikować tabelę funkcji w sklepie online:

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
)

Operacja publish_table wykonuje następujące czynności:

  1. Utwórz tabelę w sklepie online, jeśli nie istnieje.
  2. Zsynchronizuj dane funkcji z tabeli funkcji offline do sklepu online.
  3. Skonfiguruj niezbędną infrastrukturę do utrzymywania synchronizacji sklepu internetowego z tabelą offline.

publish_table zawsze używa domyślnej gałęzi projektu autoskalowania Lakebase.

Tryby publikowania

Parametr publish_mode określa, jak i kiedy tabela online jest aktualizowana wraz ze zmianami z tabeli funkcji trybu offline.

Zobacz Tryby synchronizacji , aby uzyskać pełne informacje o obsługiwanych trybach.

Obsługiwane tryby zostały podsumowane poniżej:

Mode Description
TRIGGERED Default. Aktualizuje stopniowo tabelę online, wprowadzając zmiany z tabeli offline przy użyciu interfejsu API lub zgodnie z harmonogramem. Opcje wyzwalania synchronizacji danych okresowo:
  • Utwórz notatnik, który uruchamia publish_table. Utwórz zaplanowane zadanie Lakeflow, które uruchamia ten notes, aby zaktualizować funkcje online przyrostowo. Zobacz Zadanie notatnika dotyczące prac.
  • Zaplanuj aktualizacje potoku z identyfikatorem pochodzącym ze zwróconego obiektu publish_table. Zobacz Uruchom aktualizację potoku.

Ten tryb wymaga włączenia funkcji Change Data Feed w tabeli offline. Zobacz Wymagania wstępne dotyczące publikowania w sklepach online.
CONTINUOUS Tabela online jest skonfigurowana przy użyciu potoku przesyłania strumieniowego, aby natychmiast zaktualizować sklep online, gdy do tabeli funkcji offline zostaną zapisane nowe dane.
SNAPSHOT Wykonuje jednorazową synchronizację, która kopiuje wszystkie dane z tabeli źródłowej do sklepu internetowego. Ten tryb jest wydajny, gdy istnieje duża liczba aktualizacji istniejących wierszy między dwiema operacjami synchronizacji.

Parametr publish_mode zastępuje parametr streaming począwszy od wersji 0.13.0.1 i wcześniejszych. Dla zgodności wstecznej, jeśli streaming=True jest przekazane, jest to równoważne ustawieniu publish_mode="CONTINUOUS".

Usuwanie tabeli online

Aby usunąć tabelę online, użyj zestawu SDK usługi 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")

Important

Jest to jedyna zalecana metoda usuwania tabeli online. Usuwa tabelę zarówno z katalogu Unity, jak i z bazy danych. Inne metody, takie jak polecenie Databricks SQL DROP TABLE lub polecenie SDK języka Python w celu usunięcia zsynchronizowanej tabeli, nie usuwają tabeli z bazowego magazynu bazy danych.

Eksplorowanie i wykonywanie zapytań o funkcje online

Gdy stan opublikowanej tabeli będzie wyświetlany jako "DOSTĘPNY", możesz eksplorować i wykonywać zapytania dotyczące danych funkcji na kilka sposobów:

Interfejs użytkownika Unity Catalog: Przejdź do tabeli online w Unity Catalog, aby wyświetlić przykładowe dane i eksplorować schemat bezpośrednio w interfejsie użytkownika. Zapewnia to wygodny sposób sprawdzania danych funkcji i sprawdzania, czy proces publikowania zakończył się pomyślnie.

Edytor SQL: Aby uzyskać bardziej zaawansowane zapytania i eksplorację danych, możesz użyć edytora SQL do uruchamiania zapytań PostgreSQL względem tabel funkcji online. Umożliwia to wykonywanie złożonych zapytań, sprzężeń i analiz danych funkcji. Aby uzyskać szczegółowe instrukcje dotyczące używania edytora SQL ze sklepami online, zobacz Query from Lakebase SQL Editor (Wykonywanie zapytań z poziomu edytora SQL Lakebase).

Korzystanie z funkcji online w aplikacjach czasu rzeczywistego

Aby udostępniać funkcje aplikacjom i usługom w czasie rzeczywistym, utwórz punkt końcowy obsługujący funkcję. Zobacz Funkcje obsługujące punkty końcowe.

Modele, które są trenowane przy użyciu funkcji z usługi Databricks, automatycznie śledzą pochodzenie funkcji, na których były trenowane. Kiedy te modele są wdrażane jako punkty końcowe, używają Unity Catalog do znajdowania odpowiednich cech w sklepie funkcji online. Aby uzyskać szczegółowe informacje, zobacz Używanie funkcji w przepływach pracy online.

Usuwanie sklepu online

Aby usunąć sklep online:

fe.delete_online_store(name="my-online-store")

Note

Usunięcie opublikowanej tabeli online może prowadzić do nieoczekiwanych błędów w zależnościach podrzędnych. Przed usunięciem tabeli należy upewnić się, że jej funkcje online nie są już używane przez obsługę modelu lub obsługę funkcji punktów końcowych.

Najlepsze rozwiązania dotyczące optymalizacji kosztów

  • Wykorzystanie sklepów online: możesz opublikować wiele tabel cech w jednym sklepie online. W przypadku scenariuszy programowania, testowania i trenowania zalecamy udostępnianie jednego sklepu online w wielu projektach lub użytkownikach zamiast tworzenia oddzielnych sklepów.
  • Odpowiednio dobrana pojemność: Zacznij od CU_2 na potrzeby testów i skaluj w górę lub w dół wyłącznie na podstawie wydajności i kosztów.
  • Usuwanie sklepów online, które nie są używane: sklepy online stale generują koszty. Usuń sklepy online , które nie są już potrzebne.

Limitations

  • Nazwa katalogu tabeli online musi odpowiadać nazwie bazy danych. Udostępnianie funkcji online wymaga, aby nazwa katalogu Unity Catalog tabeli online była taka sama jak nazwa bazowej bazy danych Lakebase (Postgres); jeśli są różne, wdrożenie punktu końcowego udostępniania modelu kończy się niepowodzeniem. Publikowanie lub materializacja za pomocą API inżynierii cech (publish_table, materialize_features) domyślnie tworzy dopasowany katalog. Niedopasowanie występuje tylko wtedy, gdy kierujesz żądanie do katalogu zarejestrowanego dla bazy danych o innej nazwie — na przykład katalogu zagranicznego lub zarządzanego katalogu online utworzonego przy użyciu niestandardowej nazwy bazy danych — co nie jest obsługiwane w przypadku obsługi cech online.
  • Określanie określonej tabeli online nie jest obsługiwane. Gdy tabela funkcji jest publikowana w wielu tabelach online, obsługa modelu i funkcja obsługujące punkty końcowe zawsze są rozpoznawane jako najstarsza tabela online na podstawie znacznika czasu tworzenia.
  • Magazyn funkcji online obsługuje maksymalnie 3 repliki do odczytu (łącznie 4 wystąpienia obliczeniowe, w tym podstawowe). Repliki odczytu odciążają ruch odczytu z serwera głównego i zapewniają wysoką dostępność, przejmując działanie w razie jego awarii.
  • Następujące parametry nie są obsługiwane podczas publikowania w magazynie funkcji online usługi Databricks: filter_condition, checkpoint_location, mode, trigger i features.
  • Obsługiwane są tylko tabele atrybutów w Unity Catalog.
  • Skalowanie do zera bazy danych Lakebase nie jest obsługiwane.
  • Punkty końcowe obsługujące funkcje i obsługa modeli, które wyszukują funkcje z wielu magazynów funkcji online, nadal działają, jeśli już istnieją, ale nie można utworzyć nowych punktów końcowych, takich jak ten w wystąpieniach skalowania automatycznego w usłudze Lakebase.
  • Wystąpienia skalowania automatycznego utworzone przy użyciu interfejsu API projektów lub interfejsu użytkownika nie używają następujących pól: creator, read_replica_counti capacity.
  • Nie można zaktualizować wystąpienia skalowania automatycznego, które zostało utworzone przy użyciu interfejsu API projektów lub interfejsu użytkownika.
  • Klucze zarządzane przez klienta mają zastosowanie tylko do sklepów funkcji online utworzonych po udostępnieniu klucza zarządzanego przez klienta w regionie. Zobacz Szyfrowanie przy użyciu kluczy zarządzanych przez klienta.

Rozwiązywanie problemów

Komunikat o błędzie: Skipping publishing to online table '...' because the feature sync pipeline is already running.

Ten błąd występuje, jeśli wiele notesów lub zadań próbuje opublikować w tabeli online w tym samym czasie. Tylko jedna operacja synchronizacji jest dozwolona dla tabeli online w danym momencie, aby zapobiec konfliktom danych.

Usługa Databricks zaleca tworzenie przepływów pracy do użycia jednego polecenia publish_table, na przykład pojedynczego zadania na końcu procesu. Jeśli w ten sposób nie można koordynować przepływów pracy, get_status() poczekaj, aż inne polecenia publikowania zakończą synchronizację przed wyzwoleniem nowej publikacji.

Przykładowy notatnik

W poniższym notesie przedstawiono przykład konfigurowania usługi Databricks Online Feature Store i uzyskiwania do nie dostępu przy użyciu usługi Databricks Lakebase.

Sklep funkcji online z notesem lakebase

Pobierz laptopa

Dodatkowe zasoby