Partilhar via


Armazenamentos de Atributos Online Databricks

Important

Esta funcionalidade está na Pré-visualização Pública e está disponível nas seguintes regiões:

westus, westus2, , eastus, , eastus2northeuropewesteuropeaustraliaeastbrazilsouthcanadacentralcentralindiacentralussouthcentralussoutheastasiauksouth

As Lojas de Recursos Online Databricks são uma solução escalável e de alto desempenho para fornecer dados de recursos para aplicativos on-line e modelos de aprendizado de máquina em tempo real. Desenvolvido pelo Databricks Lakebase, ele fornece acesso de baixa latência a dados de recursos em alta escala, mantendo a consistência com suas tabelas de recursos offline.

Os principais casos de uso para Lojas de Recursos Online incluem:

Requirements

O Databricks Online Feature Stores requer o Databricks Runtime 16.4 LTS ML ou superior. Você também pode usar computação sem servidor.

Para usar o Databricks Online Feature Stores, você deve primeiro instalar o pacote. As seguintes linhas de código devem ser executadas sempre que um bloco de anotações é executado:

%pip install databricks-feature-engineering>=0.13.0
dbutils.library.restartPython()

Criar uma loja online

Ao criar uma loja online, provisiona uma infraestrutura gerida altamente disponível para a distribuição de funcionalidades em tempo real. Consulte os preços do Lakebase para obter detalhes. Para gerenciar custos, exclua lojas online quando não estiverem em uso para desenvolvimento e testes.

Para criar uma nova loja de recursos online:

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 "_1", "_2", "_4" e "_8". Cada unidade de capacidade aloca cerca de 16 GB de RAM para a instância do banco de dados, juntamente com todos os recursos de CPU e SSD locais associados. A ampliação aumenta esses recursos linearmente. Para obter mais detalhes, consulte Gerenciar a capacidade da instância.

Gerir lojas online

O código a seguir mostra como recuperar e atualizar lojas online:

# 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
)

Adicionar réplicas de leitura a uma loja virtual

Ao criar ou atualizar uma loja online, você pode adicionar réplicas de leitura à loja online especificando o read_replica_count parâmetro. O tráfego de leitura é distribuído automaticamente entre réplicas de leitura, reduzindo a latência e melhorando o desempenho e a escalabilidade para cargas de trabalho de alta simultaneidade.

Publicar uma tabela de funcionalidades numa loja online

Depois que sua loja online estiver no estado DISPONÍVEL , você poderá publicar tabelas de recursos para disponibilizá-las para acesso de baixa latência. Analise a tabela abaixo para garantir que sua tabela offline de origem foi criada corretamente para o caso de uso em tempo real.

Caso de uso Criar a tabela de recursos offline usando este método
Apenas os valores de funcionalidade mais recentes para cada ID de entidade estão disponíveis na loja online para aplicações em tempo real. Várias linhas com o mesmo valor de chave primária, mas valores de chave de série temporal diferentes, podem existir na fonte de dados offline e serão desduplicadas no pipeline de publicação.
Este caso é usado com mais freqüência para terminais de serviço de modelo ou recurso on-line.
Criar tabela com designação de série temporal
Os valores de recursos de séries temporais mais recentes e anteriores da tabela offline estão disponíveis na loja online para acesso por aplicativos em tempo real.
Todas as linhas da tabela de origem (offline) são publicadas sem desduplicação. Isso é usado com pouca frequência, mas pode ser necessário quando os pontos de extremidade consultam recursos por ID de entidade e carimbo de data/hora exato para verificação de dados ou backtesting.
Criar tabela sem designação de série temporal

Pré-requisitos para publicação em lojas online

Todas as tabelas de recursos (com ou sem séries temporais) devem atender a estes requisitos antes de publicar:

  1. Restrição de chave primária: necessária para publicação na loja online
  2. Chaves primárias não anuláveis: as colunas de chave primária não podem conter valores NULL
  3. Alterar feed de dados ativado: necessário para sincronização da loja online. Consulte Ativar feed de dados de alteraçã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;

Publique uma tabela de características

Para publicar uma tabela de recursos em uma loja online:

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"
)

A publish_table operação faz o seguinte:

  1. Crie uma tabela na loja online, caso ela não exista.
  2. Sincronize os dados de funcionalidades da tabela de funcionalidades offline com a loja online.
  3. Configure a infraestrutura necessária para manter a loja online sincronizada com a tabela offline.

Atualize continuamente os recursos on-line

Se publish_table for chamado com streaming=True, a tabela online será configurada com um pipeline de streaming para atualizar continuamente a loja online à medida que novos dados chegam à tabela de características offline.

Agendar atualizações para funcionalidades online

Para atualizar periodicamente as funcionalidades em uma tabela online, crie uma tarefa agendada no Lakeflow que seja executada publish_table. O trabalho atualiza automaticamente a tabela e atualiza incrementalmente os recursos online. Veja Lakeflow Jobs.

Eliminar uma tabela online

Para excluir uma tabela online, use o comando DROP TABLE Databricks SQL ou o comando Python SDK para excluir uma tabela sincronizada.

Note

A exclusão da tabela online do Unity Catalog cancela o registro da tabela e interrompe todas as atualizações de dados. No entanto, a tabela permanece no banco de dados Postgres subjacente. Para liberar espaço na instância do banco de dados, conecte-se à instância e use o DROP TABLE comando.

Explore e consulte funcionalidades online

Depois que o status da tabela publicada for exibido como "DISPONÍVEL", você poderá explorar e consultar os dados do recurso de várias maneiras:

Unity Catalog UI: navegue até a tabela online no Unity Catalog para visualizar dados de exemplo e explorar o esquema diretamente na interface do usuário. Isso fornece uma maneira conveniente de inspecionar os dados do recurso e verificar se o processo de publicação foi concluído com êxito.

Editor SQL: Para consultas mais avançadas e exploração de dados, você pode usar o editor SQL para executar consultas PostgreSQL em suas tabelas de recursos online. Isso permite que você execute consultas, junções e análises complexas em seus dados de recursos. Para obter instruções detalhadas sobre como usar o editor SQL com lojas online, consulte Acessar uma instância de banco de dados a partir do editor SQL.

Use recursos on-line em aplicativos em tempo real

Para fornecer funcionalidades a aplicações e serviços em tempo real, crie um endpoint de serviço de funcionalidades. Consulte Pontos de extremidade de disponibilização de funcionalidades.

Os modelos que são treinados usando funcionalidades do Databricks rastreiam automaticamente a linhagem das características em que foram treinados. Quando implantados como endpoints, esses modelos usam o Unity Catalog para encontrar recursos apropriados em lojas online. Para obter detalhes, consulte Usar recursos em fluxos de trabalho online.

Eliminar uma loja online

Para eliminar uma loja online:

fe.delete_online_store(name="my-online-store")

Note

A exclusão de uma tabela publicada online pode levar a falhas inesperadas nas dependências a jusante. Antes de excluir uma tabela, deve garantir que as suas funcionalidades online já não são utilizadas pelos servidores de modelo ou pelos servidores de funcionalidades.

Melhores práticas de otimização de custos

  • Reutilizar lojas online: você pode publicar várias tabelas de recursos em uma única loja online. Para cenários de desenvolvimento, teste e treinamento, recomendamos compartilhar uma loja online em vários projetos ou usuários, em vez de criar lojas separadas.
  • Dimensionamento adequado: comece com CU_1 para testes e aumente apenas quando os requisitos de desempenho o exigirem.
  • Excluir lojas online que não estão em uso: As lojas online incorrem continuamente em custos. Exclua lojas online que não são mais necessárias.

Limitations

  • O número máximo de réplicas de leitura para um repositório de recursos on-line Databricks é 2. Entre em contato com sua equipe de conta Databricks para aumentar o limite.
  • Os seguintes parâmetros não são suportados ao publicar em um repositório de recursos online Databricks: filter_condition, checkpoint_location, mode, triggere features.
  • Apenas tabelas de recursos no Unity Catalog são suportadas.
  • A única opção de publicação suportada é "merge".
  • O escalonamento para zero não é suportado em lojas online.

Exemplo de bloco de notas

O bloco de anotações a seguir mostra um exemplo de como configurar e acessar um Databricks Online Feature Store usando o Databricks Lakebase.

Loja de recursos on-line com notebook Lakebase

Obter bloco de notas

Recursos adicionais

  • Entenda a arquitetura e os recursos do Lakebase .