Functietabellen delen in werkruimten (verouderd)
Belangrijk
- Deze documentatie is buiten gebruik gesteld en wordt mogelijk niet bijgewerkt.
- Databricks raadt aan om functie-engineering in Unity Catalog te gebruiken om functietabellen te delen in werkruimten. De aanpak in dit artikel is afgeschaft.
Azure Databricks biedt ondersteuning voor het delen van functietabellen in meerdere werkruimten. U kunt bijvoorbeeld vanuit uw eigen werkruimte een functietabel maken, schrijven naar of lezen in een gecentraliseerd functiearchief. Dit is handig wanneer meerdere teams toegang hebben tot functietabellen of wanneer uw organisatie meerdere werkruimten heeft om verschillende fasen van ontwikkeling af te handelen.
Voor een gecentraliseerd functiearchief raadt Databricks aan dat u één werkruimte aanwijst om alle metagegevens van het functiearchief op te slaan en accounts te maken voor elke gebruiker die toegang nodig heeft tot het functiearchief.
Als uw teams ook modellen delen in werkruimten, kunt u ervoor kiezen om dezelfde gecentraliseerde werkruimte toe te voegen voor zowel functietabellen als modellen, of u kunt verschillende gecentraliseerde werkruimten voor elke werkruimte opgeven.
Toegang tot het gecentraliseerde functiearchief wordt beheerd door tokens. Elke gebruiker of elk script dat toegang nodig heeft, maakt een persoonlijk toegangstoken in het gecentraliseerde functiearchief en kopieert dat token naar de geheime manager van hun lokale werkruimte. Elke API-aanvraag die naar de gecentraliseerde werkruimte van het functiearchief wordt verzonden, moet het toegangstoken bevatten; de Feature Store-client biedt een eenvoudig mechanisme om de geheimen op te geven die moeten worden gebruikt bij het uitvoeren van bewerkingen tussen werkruimten.
Notitie
Als best practice voor beveiliging, wanneer u zich verifieert met geautomatiseerde hulpprogramma's, systemen, scripts en apps, raadt Databricks u aan om persoonlijke toegangstokens te gebruiken die behoren tot service-principals in plaats van werkruimtegebruikers. Zie Tokens voor een service-principal beheren om tokens voor service-principals te maken.
Vereisten
Voor het gebruik van een functiearchief in werkruimten is het volgende vereist:
- Feature Store-client v0.3.6 en hoger.
- Beide werkruimten moeten toegang hebben tot de onbewerkte functiegegevens. Ze moeten dezelfde externe Hive-metastore delen en toegang hebben tot dezelfde DBFS-opslag.
- Als IP-toegangslijsten zijn ingeschakeld, moeten IP-adressen van werkruimten zich in toegangslijsten bevinden.
Het API-token instellen voor een extern register
In deze sectie verwijst 'Werkruimte B' naar de gecentraliseerde of externe werkruimte voor het opslaan van functies.
- Maak in werkruimte B een toegangstoken.
- Maak in uw lokale werkruimte geheimen voor het opslaan van het toegangstoken en informatie over werkruimte B:
- Maak een geheim bereik:
databricks secrets create-scope --scope <scope>
. - Kies een unieke id voor werkruimte B, die hier wordt weergegeven als
<prefix>
. Maak vervolgens drie geheimen met de opgegeven sleutelnamen:databricks secrets put --scope <scope> --key <prefix>-host
: Voer de hostnaam van werkruimte B in. Gebruik de volgende Python-opdrachten om de hostnaam van een werkruimte op te halen:import mlflow host_url = mlflow.utils.databricks_utils.get_webapp_url() host_url
databricks secrets put --scope <scope> --key <prefix>-token
: Voer het toegangstoken uit werkruimte B in.databricks secrets put --scope <scope> --key <prefix>-workspace-id
: Voer de werkruimte-id in voor werkruimte B die u kunt vinden in de URL van elke pagina.
- Maak een geheim bereik:
Notitie
Mogelijk wilt u het geheime bereik delen met andere gebruikers, omdat er een limiet is voor het aantal geheime bereiken per werkruimte.
Een extern functiearchief opgeven
Op basis van het geheime bereik en het naamvoorvoegsel dat u hebt gemaakt voor de werkruimte voor het externe functiearchief, kunt u een URI voor het functiearchief van het formulier maken:
feature_store_uri = f'databricks://<scope>:<prefix>'
Geef vervolgens de URI expliciet op wanneer u een instantie van een FeatureStoreClient
:
fs = FeatureStoreClient(feature_store_uri=feature_store_uri)
Een database voor functietabellen maken op de gedeelde DBFS-locatie
Voordat u functietabellen maakt in het externe functiearchief, moet u een database maken om ze op te slaan. De database moet aanwezig zijn op de gedeelde DBFS-locatie.
Als u bijvoorbeeld een database recommender
wilt maken op de gedeelde locatie /mnt/shared
, gebruikt u de volgende opdracht:
%sql CREATE DATABASE IF NOT EXISTS recommender LOCATION '/mnt/shared'
Een functietabel maken in het externe functiearchief
De API voor het maken van een functietabel in een extern functiearchief is afhankelijk van de Databricks Runtime-versie die u gebruikt.
V0.3.6 en hoger
Gebruik de FeatureStoreClient.create_table
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 en lager
Gebruik de FeatureStoreClient.create_feature_table
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'
)
Zie het notebookvoorbeeld: Functietabellen delen in werkruimten voor voorbeelden van andere methoden voor functieopslag.
Een functietabel gebruiken vanuit het externe functiearchief
U kunt een functietabel in het externe functiearchief lezen met de FeatureStoreClient.read_table
methode door eerst het feature_store_uri
volgende in te stellen:
fs = FeatureStoreClient(feature_store_uri=f'databricks://<scope>:<prefix>')
customer_features_df = fs.read_table(
name='recommender.customer_features',
)
Andere helpermethoden voor toegang tot de functietabel worden ook ondersteund:
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()
Een extern modelregister gebruiken
Naast het opgeven van een externe functiearchief-URI, kunt u ook een externe modelregister-URI opgeven om modellen in werkruimten te delen.
Als u een extern modelregister wilt opgeven voor modelregistratie of scoren, kunt u een modelregister-URI gebruiken om een FeatureStoreClient te instantiëren.
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"
)
model_registry_uri
U feature_store_uri
kunt een model trainen met behulp van een lokale of externe functietabel en vervolgens het model registreren in een lokaal of extern modelregister.
fs = FeatureStoreClient(
feature_store_uri=f'databricks://<scope>:<prefix>',
model_registry_uri=f'databricks://<scope>:<prefix>'
)
Voorbeeld van notitieblok: Functietabellen delen in werkruimten
In het volgende notebook ziet u hoe u kunt werken met een gecentraliseerd functiearchief.
Voorbeeldnotitieblok voor gecentraliseerde functiearchief
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor