Publikování funkcí do online obchodu
Tento článek popisuje, jak publikovat funkce do online obchodu pro poskytování služeb v reálném čase.
Úložiště funkcí Databricks podporuje tato online úložiště:
Poskytovatel online obchodu | Publikování s využitím přípravy funkcí v katalogu Unity | Publikování pomocí úložiště funkcí pracovního prostoru | Vyhledávání funkcí ve službě Starší verze obsluhy modelů MLflow | Vyhledávání funkcí ve službě Model Serving |
---|---|---|---|---|
Azure Cosmos DB [1] | X | X (klient úložiště funkcí verze 0.5.0 a vyšší) | X | X |
Azure MySQL (jeden server) | X | X | ||
Azure SQL Server | X |
Poznámky k kompatibilitě služby Cosmos DB
Tato část obsahuje některé důležité věci, které je potřeba mít na paměti při používání úložiště funkcí Databricks se službou Cosmos DB.
Pracovní prostory s podporou katalogu Unity
Ve službě Databricks Runtime 12.2 LTS ML a níže není poskytovatel online úložiště Cosmos DB kompatibilní s pracovními prostory s podporou katalogu Unity. Katalog Unity i oficiální konektor Sparku služby Cosmos DB upravují katalogy Spark. Když publikujete funkce do služby Cosmos DB z pracovního prostoru s podporou katalogu Unity v clusteru s modulem Databricks Runtime 12.2 LTS ML nebo nižším, může dojít ke konfliktu zápisu, který způsobí selhání publikování úložiště funkcí do cosmos DB.
Pokud chcete službu Cosmos DB používat v pracovním prostoru s podporou katalogu Unity, musíte použít cluster se spuštěným Modulem Databricks Runtime 13.0 ML nebo novějším nebo clusterem s modulem Databricks Runtime 11.3 LTS ML nebo novějším se zásadami clusteru Unrestricted nebo Shared Compute.
Konektor Spark
Pokud chcete používat Azure Cosmos DB, musí se účet vytvořit pomocí rozhraní CORE (SQL) API a metoda síťového připojení musí být nastavená na Všechny sítě. V clusteru musí být nainstalovaný příslušný konektor OLTP pro Azure Cosmos DB OLTP pro rozhraní SQL API . Databricks doporučuje nainstalovat nejnovější verzi konektoru pro Spark 3.2 , dokud nebude vydán konektor pro Spark 3.3.
Nevytvádřujte databázi nebo kontejner ručně – použijte publish_table()
Online úložiště Cosmos DB používá jiné schéma než offline úložiště. Konkrétně v online úložišti jsou primární klíče uloženy jako kombinovaný klíč ve sloupci _feature_store_internal__primary_keys
.
Abyste měli jistotu, že úložiště funkcí má přístup k online úložišti Cosmos DB, musíte vytvořit tabulku v online obchodě pomocí publish_table()
. Nevytvořujte databázi ani kontejner ručně ve službě Cosmos DB. publish_table()
to pro vás provede automaticky.
Publikování dávkových výpočetních funkcí do online obchodu
Můžete vytvořit a naplánovat úlohu Databricks, která bude pravidelně publikovat aktualizované funkce. Tato úloha může také obsahovat kód pro výpočet aktualizovaných funkcí nebo můžete vytvořit a spustit samostatné úlohy pro výpočet a publikování aktualizací funkcí.
V případě úložišť SQL následující kód předpokládá, že online databáze s názvem "recommender_system" již v online úložišti existuje a odpovídá názvu offline úložiště. Pokud v databázi není žádná tabulka s názvem "customer_features", vytvoří ho tento kód. Předpokládá se také, že funkce se počítají každý den a ukládají se jako dělený sloupec _dt
.
Následující kód předpokládá, že jste vytvořili tajné kódy pro přístup k tomuto online obchodu.
Cosmos DB
Podpora služby Cosmos DB je k dispozici ve všech verzích přípravy funkcí v klientovi katalogu Unity a klient úložiště funkcí verze 0.5.0 a vyšší.
import datetime
from databricks.feature_engineering.online_store_spec import AzureCosmosDBSpec
# or databricks.feature_store.online_store_spec for Workspace Feature Store
online_store = AzureCosmosDBSpec(
account_uri='<account-uri>',
read_secret_prefix='<read-scope>/<prefix>',
write_secret_prefix='<write-scope>/<prefix>'
)
fe.publish_table( # or fs.publish_table for Workspace Feature Store
name='ml.recommender_system.customer_features',
online_store=online_store,
filter_condition=f"_dt = '{str(datetime.date.today())}'",
mode='merge'
)
Úložiště SQL
import datetime
from databricks.feature_engineering.online_store_spec import AzureMySqlSpec
# or databricks.feature_store.online_store_spec for Workspace Feature Store
online_store = AzureMySqlSpec(
hostname='<hostname>',
port='<port>',
read_secret_prefix='<read-scope>/<prefix>',
write_secret_prefix='<write-scope>/<prefix>'
)
fs.publish_table(
name='recommender_system.customer_features',
online_store=online_store,
filter_condition=f"_dt = '{str(datetime.date.today())}'",
mode='merge'
)
Publikování funkcí streamování do online obchodu
Pokud chcete nepřetržitě streamovat funkce do online obchodu, nastavte streaming=True
.
fe.publish_table( # or fs.publish_table for Workspace Feature Store
name='ml.recommender_system.customer_features',
online_store=online_store,
streaming=True
)
Publikování vybraných funkcí do online obchodu
Pokud chcete publikovat jenom vybrané funkce do online obchodu, použijte features
argument k zadání názvů funkcí, které chcete publikovat. Primární klíče a klíče časového razítka jsou vždy publikovány. Pokud argument nezadáte features
nebo pokud je hodnota None, publikují se všechny funkce z tabulky funkcí offline.
Poznámka:
Celá offline tabulka musí být platná tabulka funkcí, i když publikujete jenom podmnožinu funkcí do online obchodu. Pokud offline tabulka obsahuje nepodporované datové typy, nemůžete publikovat podmnožinu funkcí z této tabulky do online obchodu.
fe.publish_table( # or fs.publish_table for Workspace Feature Store
name='ml.recommender_system.customer_features',
online_store=online_store,
features=["total_purchases_30d"]
)
Publikování tabulky funkcí do konkrétní databáze
V specifikaci online úložiště zadejte název databáze (database_name
) a název tabulky (table_name
). Pokud tyto parametry nezadáte, použije se název offline databáze a název tabulky funkcí. database_name
musí již existovat v online obchodě.
online_store = AzureMySqlSpec(
hostname='<hostname>',
port='<port>',
database_name='<database-name>',
table_name='<table-name>',
read_secret_prefix='<read-scope>/<prefix>',
write_secret_prefix='<write-scope>/<prefix>'
)
Přepsat existující online tabulku funkcí nebo konkrétní řádky
Použije mode='overwrite'
se ve publish_table
volání. Online tabulka je zcela přepsána daty v offline tabulce.
Poznámka:
Azure Cosmos DB nepodporuje režim přepsání.
fs.publish_table(
name='recommender_system.customer_features',
online_store=online_store,
mode='overwrite'
)
Pokud chcete přepsat pouze určité řádky, použijte filter_condition
argument:
fs.publish_table(
name='recommender_system.customer_features',
online_store=online_store,
filter_condition=f"_dt = '{str(datetime.date.today())}'",
mode='merge'
)
Odstranění publikované tabulky z online obchodu
Pomocí klienta úložiště funkcí verze 0.12.0 a vyšší můžete drop_online_table
odstranit publikovanou tabulku z online obchodu. Když odstraníte publikovanou tabulku, drop_online_table
odstraní se tabulka od poskytovatele online obchodu a metadata online obchodu se z Databricks odeberou.
fe.drop_online_table( # or fs.drop_online_table for Workspace Feature Store
name='recommender_system.customer_features',
online_store = online_store
)
Poznámka:
drop_online_table
odstraní publikovanou tabulku z online obchodu. Neodstraní tabulku funkcí v Databricks.- Před odstraněním publikované tabulky byste měli zajistit, aby se tabulka nepoužívala pro vyhledávání funkcí obsluhy modelů a neměla žádné další podřízené závislosti. Odstranění je nevratné a může způsobit selhání závislostí.
- Pokud chcete zkontrolovat všechny závislosti, zvažte obměně klíčů publikované tabulky, kterou plánujete odstranit po dobu jednoho dne před spuštěním
drop_online_table
.