Sdílení tabulek funkcí mezi pracovními prostory (starší verze)
Důležité
- Tato dokumentace byla vyřazena a nemusí být aktualizována.
- Databricks doporučuje používat funkci engineering v katalogu Unity ke sdílení tabulek funkcí napříč pracovními prostory. Přístup v tomto článku je zastaralý.
Azure Databricks podporuje sdílení tabulek funkcí napříč několika pracovními prostory. Například z vlastního pracovního prostoru můžete vytvářet, zapisovat nebo číst z tabulky funkcí v centralizovaném úložišti funkcí. To je užitečné, když více týmů sdílí přístup k tabulkám funkcí nebo když má vaše organizace více pracovních prostorů pro zpracování různých fází vývoje.
V případě centralizovaného úložiště funkcí databricks doporučuje určit jeden pracovní prostor pro ukládání všech metadat úložiště funkcí a vytvářet účty pro každého uživatele, který potřebuje přístup k úložišti funkcí.
Pokud vaše týmy také sdílejí modely mezi pracovními prostory, můžete se rozhodnout vyhradit stejný centralizovaný pracovní prostor pro tabulky funkcí i modely nebo pro každý z nich zadat různé centralizované pracovní prostory.
Přístup k centralizovaným úložišti funkcí je řízen tokeny. Každý uživatel nebo skript, který potřebuje přístup , vytvoří osobní přístupový token v centrálním úložišti funkcí a zkopíruje tento token do správce tajných kódů místního pracovního prostoru. Každý požadavek rozhraní API odeslaný do pracovního prostoru centralizovaného úložiště funkcí musí obsahovat přístupový token; Klient úložiště funkcí poskytuje jednoduchý mechanismus pro určení tajných kódů, které se mají použít při provádění operací mezi pracovními prostory.
Poznámka:
Osvědčeným postupem při ověřování pomocí automatizovaných nástrojů, systémů, skriptů a aplikací doporučuje Databricks místo uživatelů pracovního prostoru používat tokeny patního přístupu, které patří instančním objektům . Pokud chcete vytvořit tokeny pro instanční objekty, přečtěte si téma Správa tokenů instančního objektu.
Požadavky
Použití úložiště funkcí napříč pracovními prostory vyžaduje:
- Klient úložiště funkcí verze 0.3.6 a vyšší
- Oba pracovní prostory musí mít přístup k nezpracovaným datům funkcí. Musí sdílet stejný externí metastore Hive a mít přístup ke stejnému úložišti DBFS.
- Pokud jsou povolené přístupové seznamy IP adres, musí být IP adresy pracovního prostoru v přístupových seznamech.
Nastavení tokenu rozhraní API pro vzdálený registr
V této části "Pracovní prostor B" odkazuje na centralizovaný nebo vzdálený pracovní prostor úložiště funkcí.
- V pracovním prostoru B vytvořte přístupový token.
- V místním pracovním prostoru vytvořte tajné kódy pro uložení přístupového tokenu a informací o pracovním prostoru B:
- Vytvořte obor tajného kódu:
databricks secrets create-scope --scope <scope>
. - Vyberte jedinečný identifikátor pracovního prostoru B, který je zde zobrazený jako
<prefix>
. Pak vytvořte tři tajné kódy se zadanými názvy klíčů:databricks secrets put --scope <scope> --key <prefix>-host
: Zadejte název hostitele pracovního prostoru B. Pomocí následujících příkazů Pythonu získejte název hostitele pracovního prostoru:import mlflow host_url = mlflow.utils.databricks_utils.get_webapp_url() host_url
databricks secrets put --scope <scope> --key <prefix>-token
: Zadejte přístupový token z pracovního prostoru B.databricks secrets put --scope <scope> --key <prefix>-workspace-id
: Zadejte ID pracovního prostoru pro pracovní prostor B, které najdete v adrese URL libovolné stránky.
- Vytvořte obor tajného kódu:
Poznámka:
Rozsah tajných kódů můžete sdílet s dalšími uživateli, protože existuje omezení počtu oborů tajných kódů na pracovní prostor.
Určení vzdáleného úložiště funkcí
Na základě rozsahu tajných kódů a předpony názvu, kterou jste vytvořili pro pracovní prostor vzdáleného úložiště funkcí, můžete vytvořit identifikátor URI úložiště funkcí formuláře:
feature_store_uri = f'databricks://<scope>:<prefix>'
Potom explicitně zadejte identifikátor URI při vytvoření FeatureStoreClient
instance:
fs = FeatureStoreClient(feature_store_uri=feature_store_uri)
Vytvoření databáze pro tabulky funkcí ve sdíleném umístění DBFS
Než ve vzdáleném úložišti funkcí vytvoříte tabulky funkcí, musíte vytvořit databázi, do které se budou ukládat. Databáze musí existovat ve sdíleném umístění DBFS.
Pokud chcete například vytvořit databázi recommender
ve sdíleném umístění /mnt/shared
, použijte následující příkaz:
%sql CREATE DATABASE IF NOT EXISTS recommender LOCATION '/mnt/shared'
Vytvoření tabulky funkcí ve vzdáleném úložišti funkcí
Rozhraní API pro vytvoření tabulky funkcí ve vzdáleném úložišti funkcí závisí na verzi modulu runtime Databricks, kterou používáte.
V0.3.6 a novější
FeatureStoreClient.create_table
Použijte rozhraní API:
fs = FeatureStoreClient(feature_store_uri=f'databricks://<scope>:<prefix>')
fs.create_table(
name='recommender.customer_features',
primary_keys='customer_id',
schema=customer_features_df.schema,
description='Customer-keyed features'
)
V0.3.5 a novější
FeatureStoreClient.create_feature_table
Použijte rozhraní API:
fs = FeatureStoreClient(feature_store_uri=f'databricks://<scope>:<prefix>')
fs.create_feature_table(
name='recommender.customer_features',
keys='customer_id',
schema=customer_features_df.schema,
description='Customer-keyed features'
)
Příklady jiných metod úložiště funkcí najdete v příkladu poznámkového bloku: Sdílení tabulek funkcí napříč pracovními prostory.
Použití tabulky funkcí ze vzdáleného úložiště funkcí
Tabulku funkcí můžete přečíst ve vzdáleném úložišti funkcí pomocí FeatureStoreClient.read_table
metody tak, že nejprve nastavíte feature_store_uri
:
fs = FeatureStoreClient(feature_store_uri=f'databricks://<scope>:<prefix>')
customer_features_df = fs.read_table(
name='recommender.customer_features',
)
Podporují se také další pomocné metody pro přístup k tabulce funkcí:
fs.read_table()
fs.get_feature_table() # in v0.3.5 and below
fs.get_table() # in v0.3.6 and above
fs.write_table()
fs.publish_table()
fs.create_training_set()
Použití registru vzdáleného modelu
Kromě určení identifikátoru URI vzdáleného úložiště funkcí můžete také zadat identifikátor URI registru vzdáleného modelu pro sdílení modelů napříč pracovními prostory.
Pokud chcete zadat registr vzdáleného modelu pro protokolování nebo bodování modelu, můžete pomocí identifikátoru URI registru modelů vytvořit instanci FeatureStoreClient.
fs = FeatureStoreClient(model_registry_uri=f'databricks://<scope>:<prefix>')
customer_features_df = fs.log_model(
model,
"recommendation_model",
flavor=mlflow.sklearn,
training_set=training_set,
registered_model_name="recommendation_model"
)
Pomocí feature_store_uri
a model_registry_uri
můžete model vytrénovat pomocí libovolné místní nebo vzdálené tabulky funkcí a pak ho zaregistrovat v libovolném místním nebo vzdáleném registru modelu.
fs = FeatureStoreClient(
feature_store_uri=f'databricks://<scope>:<prefix>',
model_registry_uri=f'databricks://<scope>:<prefix>'
)
Příklad poznámkového bloku: Sdílení tabulek funkcí napříč pracovními prostory
Následující poznámkový blok ukazuje, jak pracovat s centralizovaným úložištěm funkcí.