Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Хранилища функций Databricks Online — это высокопроизводительное масштабируемое решение для обслуживания данных функций в онлайн-приложениях и моделях машинного обучения в режиме реального времени. На базе Databricks Lakebase онлайн-репозитории функций предоставляют доступ к данным признаков в больших масштабах с низкой задержкой, сохраняя согласованность с вашими оффлайн-таблицами признаков.
Ниже приведены основные варианты использования для интернет-магазинов компонентов:
- Обслуживание функций для приложений в режиме реального времени , таких как системы рекомендаций, обнаружение мошенничества и механизмы персонализации с помощью конечных точек обслуживания компонентов.
- Автоматический поиск признаков для инференции в режиме реального времени на конечных точках сервирования моделей.
Новые интернет-магазины функций теперь создаются в качестве проектов автомасштабирования Lakebase. Для получения подробной информации и различий, см. раздел Объединение Lakebase в автомасштабировании.
Requirements
Для хранилищ компонентов Databricks Online требуется Среда выполнения Databricks 16.4 LTS ML или более поздней версии. Вы также можете использовать бессерверные вычисления.
Чтобы использовать хранилища компонентов Databricks Online, необходимо сначала установить пакет. При каждом запуске записной книжки должны выполняться следующие строки кода:
%pip install databricks-feature-engineering>=0.13.0
dbutils.library.restartPython()
Создание интернет-магазина
При создании интернет-магазина вы подготавливаете высокодоступную управляемую инфраструктуру для обслуживания функций в режиме реального времени.
create_online_store API создаёт экземпляр Lakebase с функцией автомасштабирования. Дополнительные сведения об автомасштабировании Lakebase см. в разделе "Автомасштабирование" по умолчанию.
Чтобы управлять затратами, удалите подготовленные интернет-магазины Lakebase, если они не используются для разработки и тестирования.
Чтобы создать новое интернет-хранилище функций, выполните приведенные действия.
from databricks.feature_engineering import FeatureEngineeringClient
# Initialize the client
fe = FeatureEngineeringClient()
# Create an online store with specified capacity
fe.create_online_store(
name="my-online-store", # maximum of 63 bytes
capacity="CU_2" # Valid options: "CU_1", "CU_2", "CU_4", "CU_8"
)
Сведения о параметрах емкости для экземпляров автомасштабирования Lakebase см. в разделе "Размер вычислительных ресурсов". Хотя API задает одно значение, емкость фактически является диапазоном, который масштабируется автоматически.
Сведения о разрешениях для экземпляров автомасштабирования Lakebase см. в разделе Предоставление разрешений проекта.
Сведения о параметрах емкости для подготовленных экземпляров Lakebase см. в разделе "Управление емкостью экземпляров".
Управление интернет-магазинами
В следующем коде показано, как извлечь данные из интернет-магазинов:
# List all accessible online stores
stores = fe.list_online_stores()
for store in stores:
print(f"Store: {store.name}, State: {store.state}, Capacity: {store.capacity}")
# Get information about an existing online store
store = fe.get_online_store(name="my-online-store")
if store:
print(f"Store: {store.name}, State: {store.state}, Capacity: {store.capacity}")
Если вы создали интернет-магазин с помощью fe.create_online_store, его можно обновить с помощью fe.update_online_store:
# Update the capacity of an online store
# Note: this does not work for an Autoscaling instance that was created using the projects API or the UI
updated_store = fe.update_online_store(
name="my-online-store",
capacity="CU_4" # Upgrade to higher capacity
)
Добавить реплики для чтения в интернет-магазин
При создании или обновлении онлайн-хранилища признаков можно добавить репликации для чтения в онлайн-хранилище, через параметр read_replica_count. Нагрузка на чтение автоматически распределяется по репликам для чтения, уменьшая задержку и повышая производительность и масштабируемость при рабочих нагрузках с высокой степенью параллелизма.
Вы не можете добавить реплики для чтения в проект автомасштабирования Lakebase, созданный с использованием API или пользовательского интерфейса.
Публикация таблицы функций в интернет-магазине
После того как интернет-магазин находится в состоянии AVAILABLE , вы можете опубликовать таблицы функций, чтобы сделать их доступными для доступа с низкой задержкой.
publish_table API синхронизирует данные из автономной таблицы функций с интернет-магазином, созданным с помощью create_online_store API. Просмотрите приведенную ниже таблицу, чтобы убедиться, что исходная автономная таблица была создана правильно для варианта использования в режиме реального времени.
| Сценарий использования | Создание автономной таблицы функций с помощью этого метода |
|---|---|
| Только последние значения функций для каждого идентификатора сущности доступны в интернет-магазине для приложений в режиме реального времени. Несколько строк с одинаковым значением первичного ключа, но разные значения ключей временных рядов могут существовать в автономном источнике данных и будут дедупликированы в конвейере публикации. Этот случай чаще всего используется для онлайн-моделей или конечных точек обслуживания функций. |
Создание таблицы с указанием временных рядов |
| Последние и все предыдущие значения признаков временных рядов из автономной таблицы доступны в онлайн-хранилище для доступа приложениями в режиме реального времени. Все строки из исходной (автономной) таблицы публикуются без дедупликации. Это редко используется, но может потребоваться, когда конечные точки запрашивают функции по идентификатору сущности и точной метке даты/времени для проверки данных или обратного тестирования. Чтобы использовать столбец DATE или TIMESTAMP в качестве простого ключа подстановки (без семантики временных рядов), измените тип столбца на STRING. |
Создание таблицы с указанием временных рядов |
Предварительные требования для публикации в интернет-магазинах
Перед публикацией все таблицы функций (с временными рядами или без них) должны соответствовать следующим требованиям:
- Ограничение первичного ключа: требуется для публикации в Интернет-магазине
- Первичные ключи, не допускающие NULL: Столбцы, образующие первичный ключ, не могут содержать значения NULL
-
Включен канал изменений данных: обязательный для режимов публикации
CONTINUOUSиTRIGGERED. См. Включение потока данных изменений для включения потока изменений в таблицах Delta и режимы публикации для обсуждения режимов публикации.
-- Enable CDF if not already enabled
ALTER TABLE catalog.schema.your_feature_table
SET TBLPROPERTIES ('delta.enableChangeDataFeed' = 'true');
-- Ensure primary key columns are not nullable
ALTER TABLE catalog.schema.your_feature_table
ALTER COLUMN user_id SET NOT NULL;
Публикация таблицы компонентов
Чтобы опубликовать таблицу функций в интернет-магазине, выполните следующее:
from databricks.ml_features.entities.online_store import DatabricksOnlineStore
# Get the online store instance
# For Lakebase Autoscaling projects creating using the Lakebase API or UI,
# `name` is the last part of the resouce name: projects/{online_store_name}
online_store = fe.get_online_store(name="my-online-store")
# Publish the feature table to the online store
fe.publish_table(
online_store=online_store,
source_table_name="catalog_name.schema_name.feature_table_name",
# for online_table_name, the catalog name, schema name, and table name each are limited to a maximum of 63 bytes
online_table_name="catalog_name.schema_name.online_feature_table_name",
# `publish_mode` argument is optional and defaults to "TRIGGERED" mode if not specified
)
Операция publish_table выполняет следующие действия:
- Создайте таблицу в интернет-магазине, если она не существует.
- Синхронизация данных компонентов из автономной таблицы компонентов в интернет-магазин.
- Настройте необходимую инфраструктуру для синхронизации интернет-магазина с автономной таблицей.
publish_table всегда использует ветвь по умолчанию проекта Автомасштабирования Lakebase.
Режимы публикации
Параметр publish_mode для Хранилища компонентов Databricks Online, который определяет, как и когда интерактивная таблица обновляется с изменениями из автономной таблицы функций. Ниже приведены подробные сведения о поддерживаемых режимах синхронизации.
| Mode | Description |
|---|---|
TRIGGERED |
Default. Пошагово обновляет онлайн-таблицу с изменениями из оффлайн-таблицы с помощью API или по расписанию. Параметры для периодической активации синхронизации данных:
Для этого режима необходимо включить Поток Изменений Данных в автономной таблице. См. предварительные требования для публикации в интернет-магазинах. |
CONTINUOUS |
Онлайновая таблица настраивается с помощью конвейера потоковой обработки, чтобы для немедленного обновления интернет-магазина, когда новые данные записываются в автономную таблицу функций. |
SNAPSHOT |
Выполняет однократную синхронизацию, которая копирует все данные из исходной таблицы в интернет-магазин. Этот режим эффективен при наличии большого количества обновлений в существующих строках между двумя операциями синхронизации. |
Параметр publish_mode заменяет streaming параметр начиная с версии 0.13.0.1 и предыдущих версий. Для обратной совместимости, если streaming=True передается, он эквивалентен параметру publish_mode="CONTINUOUS".
Удаление интерактивной таблицы
Чтобы удалить онлайн-таблицу, используйте пакет SDK Databricks:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.feature_store.delete_online_table(online_table_name="catalog_name.schema_name.online_feature_table_name")
Important
Это единственный рекомендуемый метод удаления интерактивной таблицы. Она удаляет таблицу из каталога Unity и базы данных. Другие методы, такие как команда DROP TABLE Databricks SQL или команда пакета SDK для Python для удаления синхронизированной таблицы, не удаляют таблицу из базового хранилища баз данных.
Изучение и запрос функций в Интернете
После отображения состояния опубликованной таблицы как "AVAILABLE", вы можете просматривать и запрашивать данные функций несколькими способами:
Пользовательский интерфейс каталога Unity. Перейдите к интерактивной таблице в каталоге Unity, чтобы просмотреть примеры данных и просмотреть схему непосредственно в пользовательском интерфейсе. Это удобно для проверки данных компонентов и проверки успешности процесса публикации.
Редактор SQL. Для более расширенного просмотра запросов и анализа данных можно использовать редактор SQL для выполнения запросов PostgreSQL в таблицах функций в Интернете. Это позволяет выполнять сложные запросы, соединения и анализ данных функций. Подробные инструкции по использованию редактора SQL с интернет-магазинами см. в статье Доступ к экземпляру базы данных из редактора SQL.
Использование онлайн-функций в приложениях в режиме реального времени
Чтобы развертывать функции для приложений и служб в режиме реального времени, создайте конечную точку развертывания функций. Ознакомьтесь с конечными точками обслуживания компонентов.
Модели, обученные с помощью функций из Databricks, автоматически отслеживают происхождение функций, на которые они были обучены. При развертывании в качестве конечных точек эти модели используют каталог Unity для поиска соответствующих функций в интернет-магазинах. Дополнительные сведения см. в разделе "Использование функций в онлайн-рабочих процессах".
Удаление интернет-магазина
Чтобы удалить интернет-магазин, выполните приведенные действия.
fe.delete_online_store(name="my-online-store")
Note
Удаление опубликованной в Сети таблицы может привести к непредвиденным сбоям в подчиненных зависимостях. Перед удалением таблицы следует убедиться, что её онлайн-функции больше не используются службами модели или конечными точками обслуживания функций.
Рекомендации по оптимизации затрат
- Повторное использование интернет-магазинов: можно опубликовать несколько таблиц функций в одном интернет-магазине. Для сценариев разработки, тестирования и обучения рекомендуется совместно использовать один интернет-магазин в нескольких проектах или пользователях, а не создавать отдельные магазины.
- Емкость правильного размера: начните с CU_1 для тестирования и масштабирования только в том случае, если требования к производительности требуют его.
- Удаление интернет-магазинов, которые не используются: интернет-магазины постоянно несут расходы. Удалите интернет-магазины , которые больше не нужны.
Limitations
- Указание определенной интерактивной таблицы не поддерживается. Когда таблица признаков публикуется в нескольких онлайн-таблицах, обслуживание моделей и функциональных конечных точек всегда ссылаются на самую старую онлайн-таблицу на основе метки времени создания.
- Интернет-хранилище функций поддерживает до 3 реплик чтения (всего 4 вычислительных экземпляра, включая основной). Реплики разгружают трафик чтения с основного сервера и обеспечивают высокую доступность, беря на себя функции основного в случае сбоя.
- Следующие параметры не поддерживаются при публикации в интернет-магазине функций Databricks:
filter_condition,checkpoint_location,mode,triggerиfeatures. - Поддерживаются только таблицы компонентов в каталоге Unity.
- Единственным поддерживаемым режимом публикации является "слияние".
- Масштабирование Lakebase до нуля не поддерживается.
- Конечные точки сервиса признаков и сервиса моделей, которые получают признаки из нескольких онлайн-хранилищ признаков, не могут использовать экземпляры автомасштабирования Lakebase.
- Экземпляры автомасштабирования, созданные с помощью API проектов или пользовательского интерфейса, не используют следующие поля:
creator,read_replica_countиcapacity. - Невозможно обновить экземпляр автомасштабирования, созданный с помощью API проектов или пользовательского интерфейса.
Устранение неполадок
Сообщение об ошибке: Skipping publishing to online table '...' because the feature sync pipeline is already running.
Эта ошибка возникает, если одновременно несколько записных книжек или заданий пытаются опубликовать в интерактивной таблице. Только одна операция синхронизации разрешена для каждой интерактивной таблицы за раз, чтобы предотвратить конфликты данных.
Databricks рекомендует создавать рабочие процессы для использования одной publish_table команды, например одной задачи в конце задания. Если рабочие процессы не могут быть согласованы таким образом, используйте get_status() для ожидания завершения синхронизации других команд публикации перед активацией новой публикации.
Пример записной книжки
В следующей записной книжке показан пример настройки и доступа к Хранилищу компонентов Databricks Online с помощью Databricks Lakebase.
Интернет-хранилище функций с записной книжкой Lakebase
Дополнительные ресурсы
- Дополнительные сведения о проектировании компонентов в Databricks.
- Изучите системы управления данными и происхождения в каталоге Unity.
- Общие сведения об архитектуре и возможностях Lakebase .