Udostępnianie tabel funkcji między obszarami roboczymi (starsza wersja)
Ważne
- Ta dokumentacja została wycofana i może nie zostać zaktualizowana.
- Usługa Databricks zaleca używanie inżynierii funkcji w wykazie aparatu Unity do udostępniania tabel funkcji w obszarach roboczych. Podejście w tym artykule jest przestarzałe.
Usługa Azure Databricks obsługuje udostępnianie tabel funkcji w wielu obszarach roboczych. Na przykład z poziomu własnego obszaru roboczego można tworzyć, zapisywać i odczytywać dane z tabeli funkcji w scentralizowanym magazynie funkcji. Jest to przydatne, gdy wiele zespołów udostępnia dostęp do tabel funkcji lub gdy organizacja ma wiele obszarów roboczych do obsługi różnych etapów programowania.
W przypadku scentralizowanego magazynu funkcji usługa Databricks zaleca wyznaczenie jednego obszaru roboczego do przechowywania wszystkich metadanych magazynu funkcji i utworzenie kont dla każdego użytkownika, który potrzebuje dostępu do magazynu funkcji.
Jeśli twoje zespoły udostępniają również modele między obszarami roboczymi, możesz wybrać przeznaczenie tego samego scentralizowanego obszaru roboczego zarówno dla tabel funkcji, jak i modeli, lub określić różne scentralizowane obszary robocze dla każdego z nich.
Dostęp do scentralizowanego magazynu funkcji jest kontrolowany przez tokeny. Każdy użytkownik lub skrypt, który potrzebuje dostępu , tworzy osobisty token dostępu w scentralizowanym magazynie funkcji i kopiuje ten token do menedżera wpisów tajnych swojego lokalnego obszaru roboczego. Każde żądanie interfejsu API wysyłane do scentralizowanego obszaru roboczego magazynu funkcji musi zawierać token dostępu; Klient magazynu funkcji udostępnia prosty mechanizm określania wpisów tajnych, które mają być używane podczas wykonywania operacji między obszarami roboczymi.
Uwaga
Najlepszym rozwiązaniem w zakresie zabezpieczeń w przypadku uwierzytelniania za pomocą zautomatyzowanych narzędzi, systemów, skryptów i aplikacji usługa Databricks zaleca używanie osobistych tokenów dostępu należących do jednostek usługi zamiast użytkowników obszaru roboczego. Aby utworzyć tokeny dla jednostek usługi, zobacz Zarządzanie tokenami dla jednostki usługi.
Wymagania
Korzystanie z magazynu funkcji w różnych obszarach roboczych wymaga:
- Klient magazynu funkcji w wersji 0.3.6 lub nowszej.
- Oba obszary robocze muszą mieć dostęp do nieprzetworzonych danych funkcji. Muszą one współużytkować ten sam zewnętrzny magazyn metadanych Hive i mieć dostęp do tego samego magazynu systemu plików DBFS.
- Jeśli listy dostępu do adresów IP są włączone, adresy IP obszaru roboczego muszą znajdować się na listach dostępu.
Konfigurowanie tokenu interfejsu API dla rejestru zdalnego
W tej sekcji "Obszar roboczy B" odnosi się do scentralizowanego lub zdalnego obszaru roboczego magazynu funkcji.
- W obszarze RoboczyM B utwórz token dostępu.
- W lokalnym obszarze roboczym utwórz wpisy tajne do przechowywania tokenu dostępu i informacji o obszarze roboczym B:
- Utwórz zakres wpisu tajnego:
databricks secrets create-scope --scope <scope>
. - Wybierz unikatowy identyfikator obszaru roboczego B, pokazany tutaj jako
<prefix>
. Następnie utwórz trzy wpisy tajne z określonymi nazwami kluczy:databricks secrets put --scope <scope> --key <prefix>-host
: Wprowadź nazwę hosta obszaru roboczego B. Użyj następujących poleceń języka Python, aby uzyskać nazwę hosta obszaru roboczego:import mlflow host_url = mlflow.utils.databricks_utils.get_webapp_url() host_url
databricks secrets put --scope <scope> --key <prefix>-token
: wprowadź token dostępu z obszaru roboczego B.databricks secrets put --scope <scope> --key <prefix>-workspace-id
: wprowadź identyfikator obszaru roboczego dla obszaru roboczego B, który można znaleźć w adresie URL dowolnej strony.
- Utwórz zakres wpisu tajnego:
Uwaga
Możesz udostępnić zakres wpisu tajnego innym użytkownikom, ponieważ istnieje limit liczby zakresów wpisów tajnych na obszar roboczy.
Określanie zdalnego magazynu funkcji
Na podstawie zakresu wpisu tajnego i prefiksu nazwy utworzonego dla zdalnego obszaru roboczego magazynu funkcji można utworzyć identyfikator URI magazynu funkcji formularza:
feature_store_uri = f'databricks://<scope>:<prefix>'
Następnie określ jawny identyfikator URI podczas tworzenia wystąpienia elementu FeatureStoreClient
:
fs = FeatureStoreClient(feature_store_uri=feature_store_uri)
Tworzenie bazy danych dla tabel funkcji w udostępnionej lokalizacji systemu plików DBFS
Przed utworzeniem tabel funkcji w zdalnym magazynie funkcji należy utworzyć bazę danych do ich przechowywania. Baza danych musi istnieć w udostępnionej lokalizacji systemu plików DBFS.
Aby na przykład utworzyć bazę danych recommender
w lokalizacji /mnt/shared
udostępnionej, użyj następującego polecenia:
%sql CREATE DATABASE IF NOT EXISTS recommender LOCATION '/mnt/shared'
Tworzenie tabeli funkcji w zdalnym magazynie funkcji
Interfejs API do tworzenia tabeli funkcji w zdalnym magazynie funkcji zależy od używanej wersji środowiska uruchomieniowego usługi Databricks.
Wersja 0.3.6 lub nowsze
Użyj interfejsu 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'
)
Wersja 0.3.5 i starsze
Użyj interfejsu 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'
)
Przykłady innych metod magazynu funkcji można znaleźć w temacie Przykład notesu: Udostępnianie tabel funkcji między obszarami roboczymi.
Używanie tabeli funkcji ze zdalnego magazynu funkcji
Tabelę funkcji można odczytać w zdalnym magazynie funkcji za FeatureStoreClient.read_table
pomocą metody , ustawiając najpierw metodę feature_store_uri
:
fs = FeatureStoreClient(feature_store_uri=f'databricks://<scope>:<prefix>')
customer_features_df = fs.read_table(
name='recommender.customer_features',
)
Obsługiwane są również inne metody pomocnicze uzyskiwania dostępu do tabeli funkcji:
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()
Korzystanie z rejestru modeli zdalnych
Oprócz określania identyfikatora URI zdalnego magazynu funkcji można również określić identyfikator URI rejestru modelu zdalnego, aby udostępniać modele między obszarami roboczymi.
Aby określić rejestr modelu zdalnego na potrzeby rejestrowania lub oceniania modelu, możesz użyć identyfikatora URI rejestru modelu, aby utworzyć wystąpienie obiektu 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"
)
Za pomocą poleceń feature_store_uri
i model_registry_uri
można wytrenować model przy użyciu dowolnej lokalnej lub zdalnej tabeli funkcji, a następnie zarejestrować model w dowolnym lokalnym lub zdalnym rejestrze modeli.
fs = FeatureStoreClient(
feature_store_uri=f'databricks://<scope>:<prefix>',
model_registry_uri=f'databricks://<scope>:<prefix>'
)
Przykład notesu: udostępnianie tabel funkcji między obszarami roboczymi
W poniższym notesie pokazano, jak pracować ze scentralizowanym magazynem funkcji.