Delen via


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.

Werkruimten voor meerdere functieopslag

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.

  1. Maak in werkruimte B een toegangstoken.
  2. Maak in uw lokale werkruimte geheimen voor het opslaan van het toegangstoken en informatie over werkruimte B:
    1. Maak een geheim bereik: databricks secrets create-scope --scope <scope>.
    2. 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.

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_urivolgende 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_uriU 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

Notebook downloaden