Совместное использование таблиц функций между рабочими областями (устаревшая версия)
Внимание
- Поддержка этой документации прекращена, она может больше не обновляться.
- Databricks рекомендует использовать инженерию компонентов в каталоге Unity для совместного использования таблиц компонентов в рабочих областях. Подход, приведенный в этой статье, не рекомендуется.
Azure Databricks поддерживает возможность совместного использования таблиц признаков в нескольких рабочих областях. Например, из собственной рабочей области можно создавать, записывать и считывать таблицу признаков в централизованном хранилище признаков. Это полезно, когда несколько групп используют таблицы признаков вместе или в организации есть несколько рабочих областей для различных стадий разработки.
Для централизованного хранилища признаков в Databricks рекомендуется указывать отдельную рабочую область, где будут храниться все метаданные хранилища признаков, и создавать учетную запись для каждого пользователя, которому необходим доступ к хранилищу.
Если ваши рабочие группы также вместе используют модели в рабочих областях, вы можете выбрать одну централизованную рабочую область для таблиц признаков и моделей либо указать для них разные централизованные рабочие области.
Доступом к централизованному хранилищу признаков управляют токены (маркеры). Каждый пользователь или скрипт, которым требуется доступ , создает личный маркер доступа в централизованном хранилище компонентов и копирует этот маркер в диспетчер секретов своей локальной рабочей области. Каждый запрос API, отправляемый в централизованное хранилище признаков, должен содержать маркер доступа. Клиент хранилища признаков поддерживает простой механизм для передачи секретов, которые будут использоваться при выполнении операций в нескольких рабочих областях.
Примечание.
В качестве рекомендации по обеспечению безопасности при проверке подлинности с помощью автоматизированных средств, систем, сценариев и приложений Databricks рекомендуется использовать личные маркеры доступа, принадлежащие субъектам-службам, а не пользователям рабочей области. Сведения о создании маркеров для субъектов-служб см. в разделе "Управление маркерами" для субъекта-службы.
Требования
Для использования хранилища признаков в рабочих областях требуется:
- Клиент хранилища признаков версии 0.3.6 и выше.
- У обеих рабочих областей должен быть доступ к необработанным данным признаков. Они должны использовать одно внешнее хранилище метаданных Hive и иметь доступ к одному хранилищу DBFS.
- Если включены списки доступа по IP-адресам, IP-адреса рабочих областей должны находиться в списках доступа.
Настройте маркер API для удаленного реестра
В этом разделе "Рабочая область B" относится к рабочей области централизованного или удаленного хранилища компонентов.
- В рабочей области B создайте маркер доступа.
- В локальной рабочей области создайте секреты для хранения маркера доступа и сведений о рабочей области B:
- Создайте область секрета:
databricks secrets create-scope --scope <scope>
. - Выберите уникальный идентификатор для рабочей области B, как показано здесь
<prefix>
. Затем создайте три секрета с указанными именами ключей:databricks secrets put --scope <scope> --key <prefix>-host
: введите имя узла рабочей области B. Используйте следующие команды Python, чтобы получить имя узла рабочей области:import mlflow host_url = mlflow.utils.databricks_utils.get_webapp_url() host_url
databricks secrets put --scope <scope> --key <prefix>-token
: введите маркер доступа из рабочей области B.databricks secrets put --scope <scope> --key <prefix>-workspace-id
: введите идентификатор рабочей области хранилища признаков, который можно найти в URL-адресе любой страницы.
- Создайте область секрета:
Примечание.
Вы можете предоставить доступ к области секрета другим пользователям, так как для каждой рабочей области существует ограничение на количество областей секрета.
Указание удаленного хранилища признаков
На основе области секрета и префикса имени, созданного для рабочей области удаленного хранилища признаков, можно создать универсальный код ресурса (URI) хранилища признаков в следующем виде:
feature_store_uri = f'databricks://<scope>:<prefix>'
Затем укажите URI явным образом при создании экземпляра FeatureStoreClient
:
fs = FeatureStoreClient(feature_store_uri=feature_store_uri)
Создание базы данных для таблиц признаков в общем расположении DBFS
Перед созданием таблиц признаков в удаленном хранилище признаков необходимо создать базу данных для их хранения. База данных должна находиться в общем расположении DBFS.
Например, чтобы создать базу данных recommender
в общем расположении /mnt/shared
, используйте следующую команду:
%sql CREATE DATABASE IF NOT EXISTS recommender LOCATION '/mnt/shared'
Создание таблицы признаков в удаленном хранилище признаков
Подходящий API для создания таблицы признаков в удаленном хранилище признаков зависит от версии среды выполнения Databricks.
Версия 0.3.6 и выше
Используйте API 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'
)
Версия 0.3.5 и выше
Используйте API 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'
)
Примеры других методов Хранилища компонентов см . в примере записной книжки: совместное использование таблиц функций в рабочих областях.
Использование таблицы признаков из удаленного хранилища признаков
Чтобы прочитать таблицу признаков в удаленном хранилище признаков с помощью метода FeatureStoreClient.read_table
, сначала установите feature_store_uri
:
fs = FeatureStoreClient(feature_store_uri=f'databricks://<scope>:<prefix>')
customer_features_df = fs.read_table(
name='recommender.customer_features',
)
Также поддерживаются и другие вспомогательные методы доступа к таблице признаков:
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()
Использование удаленного реестра моделей
Помимо URI удаленного хранилища признаков, можно также указать URI удаленного реестра моделей для совместного использования моделей в рабочих областях.
Чтобы указать удаленный реестр моделей для ведения журнала или оценки модели, можно с помощью URI реестра моделей создать экземпляр 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"
)
С помощью feature_store_uri
и model_registry_uri
можно обучить модель с использованием любой локальной или удаленной таблицы признаков, а затем зарегистрировать модель в любом локальном или удаленном реестре моделей.
fs = FeatureStoreClient(
feature_store_uri=f'databricks://<scope>:<prefix>',
model_registry_uri=f'databricks://<scope>:<prefix>'
)
Пример записной книжки: предоставление общего доступа к таблицам компонентов в рабочих областях
В следующей записной книжке показано, как работать с централизованным хранилищем компонентов.