Databricks Lojas de recursos on-line
Databricks Online repositório de recursos é uma solução de alto desempenho e escalável para servir dados de recursos para aplicações online e modelo de machine learning em tempo real. Com tecnologia Databricks Lakebase, o repositório de recursos online oferece acesso de baixa latência aos dados de recursos em alta escala, mantendo a consistência com suas tabelas de recursos offline.
Os principais casos de uso do repositório de recursos on-line incluem:
- Servir recurso para aplicativos reais de tempo, como sistemas de recomendação, detecção de fraude e mecanismos de personalização usando o endpoint Feature Serving.
- Pesquisa automática de recurso para inferência de tempo real no endpoint do modelo servindo.
O repositório de recursos online suporta apenas instâncias de provisionamento Lakebase . Para informações sobre disponibilidade regional e opções de capacidade, consulte Instâncias de provisionamento do Lakebase.
Requisitos
Databricks O recurso on-line Stores requer Databricks Runtime 16.4 LTS ML ou acima. O senhor também pode usar serverless compute.
Para usar o Databricks Online recurso Stores, o senhor deve primeiro instalar o pacote. As seguintes linhas de código devem ser executadas sempre que um Notebook for executado:
%pip install databricks-feature-engineering>=0.13.0
dbutils.library.restartPython()
Crie um armazenamento online
A API create_online_store suporta apenas a criação de instâncias de banco de dados de provisionamento do Lakebase .
Ao criar um armazenamento online, você provisiona uma infraestrutura de gerenciamento altamente disponível para o Feature Serving em tempo real. A API create_online_store cria uma instância de provisionamento do Lakebase com uma capacidade especificada. Para controlar os custos, exclua as lojas online quando não estiverem sendo usadas para desenvolvimento e testes.
Para criar uma nova loja on-line de recursos:
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",
capacity="CU_2" # Valid options: "CU_1", "CU_2", "CU_4", "CU_8"
)
As opções de capacidade correspondem a diferentes níveis de desempenho da instância de provisionamento: "CU_1", "CU_2", "CU_4" e "CU_8". Cada unidade de capacidade aloca cerca de 16 GB de RAM para a instância do banco de dados de provisionamento, juntamente com todos os recursos de CPU e SSD locais associados. A ampliação da escala aumenta esses recursos de forma linear. Para obter mais detalhes sobre o provisionamento de instâncias do Lakebase, consulte gerenciar a capacidade da instância.
gerenciar lojas on-line
O código a seguir mostra como recuperar e atualizar lojas on-line:
# 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}")
# Update the capacity of an online store
updated_store = fe.update_online_store(
name="my-online-store",
capacity="CU_4" # Upgrade to higher capacity
)
Somente instâncias de provisionamento do Lakebase são suportadas em todas APIs de armazenamento online. Use API create_online_store para provisionar o armazenamento on-line apropriado.
Adicionar réplicas de leitura a um armazenamento online
Ao criar ou atualizar um armazenamento online, é possível adicionar réplicas de leitura ao armazenamento online especificando o parâmetro read_replica_count. O tráfego de leitura é automaticamente distribuído pelas réplicas de leitura, reduzindo a latência e melhorando o desempenho e a escalabilidade para cargas de trabalho com alta simultaneidade.
Publicar uma tabela de recursos em um armazenamento on-line
A API publish_table suporta apenas a publicação de recursos para instâncias de banco de dados de provisionamento do Lakebase .
Após o armazenamento online estar no estado DISPONÍVEL , você pode publicar tabelas de recursos para torná-las disponíveis para acesso de baixa latência. A API publish_table sincroniza dados da sua tabela de recursos offline para o armazenamento online criado usando API create_online_store . Confira a tabela abaixo para garantir que sua tabela de origem offline foi criada corretamente para o caso de uso em tempo real.
Caso de uso | Criar a tabela de recurso off-line usando este método |
|---|---|
Somente os valores de recurso mais recentes para cada ID de entidade estão disponíveis no armazenamento on-line para aplicativos reais de tempo. Várias linhas com o mesmo valor primário key mas com valores de série temporal diferentes key podem existir na fonte de dados off-line e serão deduplicadas na publicação pipeline. Esse caso é usado com mais frequência para modelo on-line ou endpoint Feature Serving. | |
Os valores de recurso mais recentes e de todas as séries temporais anteriores da tabela off-line estão disponíveis no armazenamento on-line para acesso por aplicativos reais de tempo. Todas as linhas da tabela de origem (offline) são publicadas sem desduplicação. Isso não é usado com frequência, mas pode ser necessário quando a consulta do endpoint é feita por ID da entidade e data exata/carimbo de data/hora para verificação de dados ou back-testing. |
Pré-requisitos para publicação em lojas on-line
Todas as tabelas de recursos (com ou sem séries temporais) devem atender a esses requisitos antes de serem publicadas:
- Restrição primária do site key: Necessário para a publicação on-line do armazenamento
- Chave primária não nula : As colunas key primárias não podem conter valores NULL
- Alterar o feed de dados ativado : Necessário para os modos de publicação
CONTINUOUSeTRIGGERED. Consulte Ativar feed de dados de alterações para saber como ativar o Feed de Dados de Alterações da Tabela Delta e Modos de publicação para obter uma explicação sobre os modos de publicação.
-- 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;
Publicar uma tabela de recursos
Para publicar uma tabela de recursos em um armazenamento on-line:
from databricks.ml_features.entities.online_store import DatabricksOnlineStore
# Get the online store instance
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",
online_table_name="catalog_name.schema_name.online_feature_table_name",
# `publish_mode` argument is optional and defaults to "TRIGGERED" mode if not specified
)
O site publish_table operações faz o seguinte:
- Criar uma tabela no armazenamento on-line, caso ela não exista.
- Sincronizar os dados do recurso da tabela de recurso off-line com o armazenamento on-line.
- Configurar a infraestrutura necessária para manter o armazenamento on-line em sincronia com a tabela off-line.
Modos de publicação
O parâmetro publish_mode do Databricks Online Feature Store determina como e quando a tabela online é atualizada com as alterações da tabela de recursos offline. Consulte a seção Modos de sincronização explicada para obter detalhes completos sobre os modos suportados, resumidos abaixo:
Mode | Descrição |
|---|---|
| padrão. Atualiza incrementalmente a tabela online com as alterações da tabela offline usando a API ou um programa. Opções para acionar a sincronização de dados periodicamente:
Este modo requer que o Feed de Dados de Alteração esteja ativado na tabela offline. Consulte os pré-requisitos para publicação em lojas online. |
| A tabela online está configurada com um pipeline de transmissão para atualizar imediatamente o armazenamento online à medida que novos dados são gravados na tabela de recursos offline. |
| Executa uma sincronização única que copia todos os dados da tabela de origem para o armazenamento online. Este modo é eficiente quando há um grande número de atualizações em linhas existentes entre duas operações de sincronização. |
O parâmetro publish_mode substitui o parâmetro streaming a partir da versão v0.13.0.1 e anteriores. Para compatibilidade com versões anteriores, se streaming=True for passado, é equivalente a definir publish_mode="CONTINUOUS".
Excluir uma tabela online
Para excluir uma tabela online, use o SDK do 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")
Este é o único método recomendado para excluir uma tabela online. Isso remove a tabela tanto do Unity Catalog quanto do banco de dados. Outros métodos, como o comando Databricks SQL DROP TABLE ou o comando SDK Python para excluir uma tabela sincronizada, não excluem a tabela do armazenamento do banco de dados subjacente.
Explorar e consultar recursos on-line
Depois que o status da tabela publicada for exibido como "AVAILABLE", o senhor poderá explorar e consultar os dados do recurso de várias maneiras:
Unity Catalog IU : Navegue até a tabela on-line em Unity Catalog para view dados de amostra e explore o esquema diretamente na UI. Isso proporciona uma maneira conveniente de inspecionar os dados do recurso e verificar se o processo de publicação foi concluído com êxito.
SQL Editor : Para consultas e exploração de dados mais avançadas, o senhor pode usar o editor SQL para executar consultas PostgreSQL em suas tabelas de recursos on-line. Isso permite que o senhor realize consultas complexas, junções e análises nos dados do seu recurso. Para obter instruções detalhadas sobre como usar o editor SQL com lojas on-line, consulte Acessar uma instância de banco de dados a partir do editor SQL.
Usar o recurso online em aplicativos reais de tempo
Para servir recurso a aplicativos e serviços reais de tempo, crie um Feature Serving endpoint. Consulte Feature Serving endpoint.
Os modelos que são treinados usando o recurso de Databricks rastreiam automaticamente a linhagem do recurso em que foram treinados. Quando implantados como endpoint, esses modelos usam o site Unity Catalog para encontrar o recurso apropriado em lojas on-line. Para obter detalhes, consulte Usar recurso no fluxo de trabalho on-line.
Excluir um armazenamento on-line
Para excluir um armazenamento on-line:
fe.delete_online_store(name="my-online-store")
A exclusão de uma tabela publicada on-line pode levar a falhas inesperadas nas dependências posteriores. Antes de excluir uma tabela, o senhor deve garantir que seus recursos on-line não sejam mais usados pelo modelo de serviço ou pelo endpoint Feature Serving.
Melhores práticas para otimização de custos
- Reutilize armazenamentos online : Você pode publicar várias tabelas de recursos em um único armazenamento online. Para cenários de desenvolvimento, teste e treinamento, recomendamos compartilhar um único armazenamento online entre vários projetos ou usuários, em vez de criar armazenamentos separados.
- Dimensionar a capacidade corretamente : comece com a CU_1 para testes e aumente a capacidade somente quando os requisitos de desempenho assim o exigirem.
- Exclua lojas online que não estão em uso : Lojas online geram custos continuamente. Exclua lojas online que não sejam mais necessárias.
Limitações
- Não é possível especificar uma tabela online específica. Quando uma tabela de recursos é publicada em várias tabelas online, o modelo de serviço e o endpoint Feature Serving sempre resolvem para a tabela online mais antiga com base no carimbo de data/hora de criação.
- O número máximo de réplicas de leitura para um armazenamento de recursos online do Databricks é 2. Entre em contato com a equipe do Databricks account para aumentar o limite.
- Os parâmetros a seguir não são compatíveis com a publicação em uma loja de recursos on-line Databricks:
filter_condition,checkpoint_location,mode,trigger, efeatures. - Somente tabelas de recurso em Unity Catalog são compatíveis.
- O único modo de publicação compatível é "merge".
- A redução para zero não é suportada para lojas online.
Exemplo de notebook
O Notebook a seguir apresenta um exemplo de como configurar e acessar uma Loja de Recursos Online Databricks utilizando um Lakebase Databricks.
Loja online de recursos com o Lakebase Notebook
Recurso adicional
-
Saiba mais sobre o recurso engenharia em Databricks.
-
Explore a governança de dados e a linhagem em Unity Catalog.
-
Entenda a arquitetura e os recursos do Lakebase.