Dela funktionstabeller mellan arbetsytor (äldre)
Viktigt!
- Den här dokumentationen har dragits tillbaka och kanske inte uppdateras.
- Databricks rekommenderar att du använder funktionsteknik i Unity Catalog för att dela funktionstabeller mellan arbetsytor. Metoden i den här artikeln är inaktuell.
Azure Databricks stöder delning av funktionstabeller på flera arbetsytor. Från din egen arbetsyta kan du till exempel skapa, skriva till eller läsa från en funktionstabell i ett centraliserat funktionsarkiv. Detta är användbart när flera team delar åtkomst till funktionstabeller eller när din organisation har flera arbetsytor för att hantera olika utvecklingsstadier.
För ett centraliserat funktionslager rekommenderar Databricks att du anger en enda arbetsyta som lagrar alla metadata för funktionsarkivet och skapar konton för varje användare som behöver åtkomst till funktionsarkivet.
Om dina team också delar modeller mellan arbetsytor kan du välja att dedikera samma centraliserade arbetsyta för både funktionstabeller och modeller, eller så kan du ange olika centraliserade arbetsytor för var och en.
Åtkomst till det centraliserade funktionsarkivet styrs av token. Varje användare eller skript som behöver åtkomst skapar en personlig åtkomsttoken i det centraliserade funktionsarkivet och kopierar token till den hemliga chefen för deras lokala arbetsyta. Varje API-begäran som skickas till arbetsytan för centraliserad funktionslagring måste innehålla åtkomsttoken. Feature Store-klienten tillhandahåller en enkel mekanism för att ange vilka hemligheter som ska användas när du utför åtgärder mellan arbetsytor.
Kommentar
När du autentiserar med automatiserade verktyg, system, skript och appar rekommenderar Databricks att du använder personliga åtkomsttoken som tillhör tjänstens huvudnamn i stället för arbetsyteanvändare. Information om hur du skapar token för tjänstens huvudnamn finns i Hantera token för tjänstens huvudnamn.
Krav
Användning av ett funktionslager mellan arbetsytor kräver:
- Feature Store-klienten v0.3.6 och senare.
- Båda arbetsytorna måste ha åtkomst till rådata. De måste dela samma externa Hive-metaarkiv och ha åtkomst till samma DBFS-lagring.
- Om IP-åtkomstlistor är aktiverade måste arbetsytans IP-adresser finnas i åtkomstlistor.
Konfigurera API-token för ett fjärrregister
I det här avsnittet refererar "Arbetsyta B" till arbetsytan centraliserad eller fjärransluten funktionslagring.
- Skapa en åtkomsttoken i Arbetsyta B.
- I din lokala arbetsyta skapar du hemligheter för att lagra åtkomsttoken och information om Arbetsyta B:
- Skapa ett hemligt omfång:
databricks secrets create-scope --scope <scope>
. - Välj en unik identifierare för Arbetsyta B, som visas här som
<prefix>
. Skapa sedan tre hemligheter med de angivna nyckelnamnen:databricks secrets put --scope <scope> --key <prefix>-host
: Ange värdnamnet för Arbetsyta B. Använd följande Python-kommandon för att hämta värdnamnet för en arbetsyta:import mlflow host_url = mlflow.utils.databricks_utils.get_webapp_url() host_url
databricks secrets put --scope <scope> --key <prefix>-token
: Ange åtkomsttoken från Arbetsyta B.databricks secrets put --scope <scope> --key <prefix>-workspace-id
: Ange arbetsytans ID för Arbetsyta B som finns i URL:en för valfri sida.
- Skapa ett hemligt omfång:
Kommentar
Du kanske vill dela det hemliga omfånget med andra användare, eftersom det finns en gräns för antalet hemliga omfång per arbetsyta.
Ange ett fjärrfunktionsarkiv
Baserat på det hemliga omfånget och namnprefixet som du skapade för fjärrfunktionslagringsarbetsytan kan du skapa en funktionslager-URI för formuläret:
feature_store_uri = f'databricks://<scope>:<prefix>'
Ange sedan URI:n explicit när du instansierar en FeatureStoreClient
:
fs = FeatureStoreClient(feature_store_uri=feature_store_uri)
Skapa en databas för funktionstabeller på den delade DBFS-platsen
Innan du skapar funktionstabeller i fjärrfunktionsarkivet måste du skapa en databas för att lagra dem. Databasen måste finnas på den delade DBFS-platsen.
Om du till exempel vill skapa en databas recommender
på den delade platsen /mnt/shared
använder du följande kommando:
%sql CREATE DATABASE IF NOT EXISTS recommender LOCATION '/mnt/shared'
Skapa en funktionstabell i fjärrfunktionsarkivet
API:et för att skapa en funktionstabell i ett fjärrfunktionslager beror på vilken Databricks-körningsversion du använder.
V0.3.6 och senare
Använd API:et FeatureStoreClient.create_table
:
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 och lägre
Använd API:et FeatureStoreClient.create_feature_table
:
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'
)
Exempel på andra metoder för Funktionslager finns i Notebook-exempel: Dela funktionstabeller mellan arbetsytor.
Använda en funktionstabell från fjärrfunktionsarkivet
Du kan läsa en funktionstabell i fjärrfunktionsarkivet FeatureStoreClient.read_table
med metoden genom att först ange feature_store_uri
:
fs = FeatureStoreClient(feature_store_uri=f'databricks://<scope>:<prefix>')
customer_features_df = fs.read_table(
name='recommender.customer_features',
)
Andra hjälpmetoder för att komma åt funktionstabellen stöds också:
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()
Använda ett fjärrmodellregister
Förutom att ange en fjärrfunktionslagrings-URI kan du även ange en fjärrmodellregister-URI för att dela modeller mellan arbetsytor.
Om du vill ange ett fjärrmodellregister för modellloggning eller bedömning kan du använda en modellregister-URI för att instansiera en 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"
)
Med hjälp av feature_store_uri
och model_registry_uri
kan du träna en modell med valfri lokal tabell eller fjärrfunktionstabell och sedan registrera modellen i alla lokala eller fjärranslutna modellregister.
fs = FeatureStoreClient(
feature_store_uri=f'databricks://<scope>:<prefix>',
model_registry_uri=f'databricks://<scope>:<prefix>'
)
Notebook-exempel: Dela funktionstabeller mellan arbetsytor
Följande notebook-fil visar hur du arbetar med ett centraliserat funktionsarkiv.