Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Publique tabelas de recursos em um repositório online de terceiros para disponibilizar recursos para serviço em tempo real e baixa latência. Você pode publicar recursos de lote ou streaming, um subconjunto selecionado de recursos ou em um banco de dados específico.
O Repositório de recursos do Databricks dá suporte a essas lojas online:
| Provedor de loja online | Publicação com a Engenharia de Recursos no Catálogo do Unity | Publicar com o repositório de recursos do workspace herdado | Consulta de características no Serviço de Modelagem |
|---|---|---|---|
| Azure Cosmos DB [1] | X | X (Cliente do Feature Store v0.5.0 e superior) | X |
| Azure MySQL (Servidor Único) | X | ||
| SQL Server do Azure | X |
Observações de compatibilidade do Cosmos DB
Esta seção inclui algumas coisas importantes a ter em mente ao usar o Repositório de Recursos do Databricks com o Cosmos DB.
Compatibilidade do Databricks Runtime
O provedor de repositório online do Cosmos DB não é compatível com o Databricks Runtime 17.0 ML ou superior.
Workspaces com suporte para o Unity Catalog
No Databricks Runtime 12.2 LTS ML e versões anteriores, o provedor de repositório online do Cosmos DB não é compatível com os workspaces que possuem o Unity Catalog habilitado. Tanto o Unity Catalog e o conector Spark do Cosmos DB oficial modificam os catálogos do Spark. Quando você publica recursos no Cosmos DB a partir de um workspace habilitado para o Unity Catalog em um cluster que executa o Databricks Runtime 12.2 LTS ML ou anteriores, pode haver um conflito de gravação que faz com que a publicação do Repositório de Recursos no Cosmos DB falhe.
Para usar o Cosmos DB em um workspace habilitado para o Unity Catalog, você deve usar um cluster executando o Databricks Runtime 13.0 ML ou posterior ou um cluster executando o Databricks Runtime 11.3 LTS ML ou posterior com a política de cluster Irrestrito ou Computação Compartilhada.
Conector do Spark
Para usar o Azure Cosmos DB, a conta deve ser criada com a API do Core (SQL) e o método de conectividade de rede deve ser definido como Todas as redes. O Conector OLTP do Spark 3 do Azure Cosmos DB para a API do SQL deve estar instalado no cluster. O Databricks recomenda que você instale a versão mais recente do conector do Spark 3.2 até que um conector do Spark 3.3 seja lançado.
Não crie manualmente um banco de dados ou contêiner – Use publish_table()
O repositório online do Cosmos DB usa um esquema diferente do repositório offline. Especificamente, no repositório online, as chaves primárias são armazenadas como uma chave combinada na coluna _feature_store_internal__primary_keys.
Para garantir que o Repositório de Recursos possa acessar o repositório online do Cosmos DB, você precisa criar a tabela no repositório online usando publish_table(). Não crie manualmente um banco de dados ou contêiner dentro do Cosmos DB.
publish_table() faz isso para você automaticamente.
Publicar características computadas em lote em uma loja online
Você pode criar e agendar uma tarefa do Databricks para publicar regularmente as funcionalidades atualizadas. Esse trabalho também pode incluir o código necessário para calcular os recursos atualizados ou você pode criar e executar trabalhos separados para calcular e publicar atualizações de recursos.
Para repositórios SQL, o código a seguir pressupõe que um banco de dados online chamado “recommender_system” já exista no repositório online e corresponda ao nome do repositório offline. Se não houver uma tabela chamada “customer_features” no banco de dados, esse código criará uma. Ele também pressupõe que as características sejam computadas diariamente e armazenadas como uma coluna particionada _dt.
O código a seguir pressupõe que você tenha criado segredos para acessar esse repositório online.
Cosmos DB
O suporte ao Cosmos DB está disponível em todas as versões do cliente da Engenharia de Recursos no Catálogo do Unity e no cliente do Repositório de Recursos v0.5.0 e superior.
import datetime
from databricks.feature_engineering.online_store_spec import AzureCosmosDBSpec
# or databricks.feature_store.online_store_spec for Workspace Feature Store
online_store = AzureCosmosDBSpec(
account_uri='<account-uri>',
read_secret_prefix='<read-scope>/<prefix>',
write_secret_prefix='<write-scope>/<prefix>'
)
fe.publish_table( # or fs.publish_table for Workspace Feature Store
name='ml.recommender_system.customer_features',
online_store=online_store,
filter_condition=f"_dt = '{str(datetime.date.today())}'",
mode='merge'
)
Repositórios SQL
import datetime
from databricks.feature_engineering.online_store_spec import AzureMySqlSpec
# or databricks.feature_store.online_store_spec for Workspace Feature Store
online_store = AzureMySqlSpec(
hostname='<hostname>',
port='<port>',
read_secret_prefix='<read-scope>/<prefix>',
write_secret_prefix='<write-scope>/<prefix>'
)
fs.publish_table(
name='recommender_system.customer_features',
online_store=online_store,
filter_condition=f"_dt = '{str(datetime.date.today())}'",
mode='merge'
)
Publicar recursos de streaming em um repositório online
Para transmitir continuamente as funcionalidades para a loja online, defina streaming=True.
fe.publish_table( # or fs.publish_table for Workspace Feature Store
name='ml.recommender_system.customer_features',
online_store=online_store,
streaming=True
)
Observação
O streaming para o DynamoDB requer um cluster de computação clássico com o modo de acesso Dedicado (antigo usuário único). Consulte Publicar recursos calculados em lote em um repositório online.
Publicar recursos selecionados em um repositório online
Para publicar somente os recursos selecionados no repositório online, use o argumento features para especificar os nomes dos recursos a serem publicados. Chaves primárias e chaves de carimbo de data/hora são sempre publicadas. Se você não especificar o argumento features ou se o valor for Nenhum, todos os recursos da tabela de recursos offline serão publicados.
Observação
A tabela offline inteira deve ser uma tabela de recursos válida, mesmo ao publicar apenas um subconjunto de recursos em um armazenamento online. Se a tabela offline contiver tipos de dados sem suporte, não será possível publicar um subconjunto de recursos dela em um armazenamento online.
fe.publish_table( # or fs.publish_table for Workspace Feature Store
name='ml.recommender_system.customer_features',
online_store=online_store,
features=["total_purchases_30d"]
)
Publicar uma tabela de recursos em um banco de dados específico
Na especificação do repositório online, especifique o nome do banco de dados (database_name) e o nome da tabela (table_name). Se você não especificar esses parâmetros, o nome do banco de dados offline e o nome da tabela de recursos serão usados.
database_name já precisa existir na loja online.
online_store = AzureMySqlSpec(
hostname='<hostname>',
port='<port>',
database_name='<database-name>',
table_name='<table-name>',
read_secret_prefix='<read-scope>/<prefix>',
write_secret_prefix='<write-scope>/<prefix>'
)
Substituir uma tabela de recursos online existente ou linhas específicas
Use mode='overwrite' na chamada a publish_table. A tabela online será substituída por completo pelos dados da tabela offline.
Observação
O Azure Cosmos DB não dá suporte ao modo de substituição.
fs.publish_table(
name='recommender_system.customer_features',
online_store=online_store,
mode='overwrite'
)
Para substituir apenas determinadas linhas, use o argumento filter_condition:
fs.publish_table(
name='recommender_system.customer_features',
online_store=online_store,
filter_condition=f"_dt = '{str(datetime.date.today())}'",
mode='merge'
)
Excluir uma tabela publicada de um repositório online
Com o cliente do Repositório de Recursos v0.12.0 e posterior, você pode usar drop_online_table para excluir uma tabela publicada de um repositório online. Quando você exclui uma tabela publicada com drop_online_table, a tabela é excluída do seu provedor de repositório online e os metadados do repositório online são removidos do Databricks.
fe.drop_online_table( # or fs.drop_online_table for Workspace Feature Store
name='recommender_system.customer_features',
online_store = online_store
)
Observação
-
drop_online_tableexclui a tabela publicada do repositório online. Ele não exclui a tabela de recursos no Databricks. - Antes de excluir uma tabela publicada, você deve garantir que a tabela não seja usada para a pesquisa de recursos do Serviço de Modelo e não tenha outras dependências downstream. A exclusão é irreversível e pode causar falha das dependências.
- Para verificar se há dependências, considere fazer a rotação de chaves para a tabela publicada que você planeja excluir por um dia antes de executar
drop_online_table.