Pular para o conteúdo principal

Publicar recurso em um armazenamento on-line

Este artigo descreve como publicar um recurso em um armazenamento on-line para servir o tempo real.

Databricks O recurso Store é compatível com estas lojas on-line:

armazenamento online provider

Publicar com recurso engenharia em Unity Catalog

Publicar com o recurso Store do espaço de trabalho herdado

Recurso lookup in Legacy MLflow servindo modelo

recurso lookup in servindo modelo

Amazon DynamoDB

X

X (recurso Store client v0.3.8 e acima)

X

X

Amazon Aurora (compatível com MySQL)

X

X

Amazon RDS MySQL

X

X

nota

O armazenamento on-line do DynamoDB usa um esquema diferente do armazenamento off-line. Especificamente, no armazenamento on-line, a chave primária é armazenada como uma combinação key na coluna _feature_store_internal__primary_keys.

Para garantir que o recurso Store possa acessar o armazenamento on-line do DynamoDB, o senhor deve criar a tabela no armazenamento on-line usando publish_table(). Não crie manualmente uma tabela dentro do DynamoDB. publish_table() faz isso para você automaticamente.

Publicar lotes-compute recurso em um armazenamento on-line

O senhor pode criar e programar um Databricks Job para publicar regularmente recursos atualizados. Esse Job também pode incluir o código para calcular o recurso atualizado, ou o senhor pode criar e executar um Job separado para calcular e publicar atualizações de recurso.

Para as lojas SQL, o código a seguir pressupõe que um banco de dados on-line chamado "recommender_system" já existe no armazenamento on-line e corresponde ao nome do armazenamento off-line. Se não houver uma tabela chamada “customer_features” no banco de dados, esse código cria uma. Ele também pressupõe que os recursos são computados todos os dias e armazenados como uma coluna particionada _dt.

O código a seguir pressupõe que o senhor tenha criado segredos para acessar esse armazenamento on-line.

Se estiver usando o DynamoDB, o site Databricks recomenda que o senhor forneça autenticação de gravação por meio de um instance profile anexado a um clustering Databricks. O instance profile só pode ser usado para publicar recurso; para procurar valores de recurso, o senhor deve usar os segredos do Databricks.

O suporte ao DynamoDB está disponível em todas as versões do recurso engenharia no cliente Unity Catalog e no cliente Recurso Store v0.3.8 e acima.

Python
import datetime
from databricks.feature_engineering.online_store_spec import AmazonDynamoDBSpec
# or databricks.feature_store.online_store_spec for Workspace Feature Store

# do not pass `write_secret_prefix` if you intend to use the instance profile attached to the cluster.
online_store = AmazonDynamoDBSpec(
region='<region>',
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'
)

Publicar o recurso de transmissão em um armazenamento on-line

Para transmitir continuamente o recurso para o armazenamento on-line, defina streaming=True.

Python
fe.publish_table( # or fs.publish_table for Workspace Feature Store
name='ml.recommender_system.customer_features',
online_store=online_store,
streaming=True
)

Publicar o recurso selecionado em um armazenamento on-line

Para publicar apenas um recurso selecionado no armazenamento on-line, use o argumento features para especificar o(s) nome(s) do(s) recurso(s) a ser(em) publicado(s). A chave primária e a chave de registro de data e hora são sempre publicadas. Se o senhor não especificar o argumento features ou se o valor for None (Nenhum), todos os recursos da tabela de recursos off-line serão publicados.

nota

Toda a tabela off-line deve ser uma tabela de recurso válida, mesmo que o senhor esteja publicando apenas um subconjunto de recurso em um armazenamento on-line. Se a tabela off-line contiver tipos de dados não suportados, o senhor não poderá publicar um subconjunto de recursos dessa tabela em um armazenamento on-line.

Python
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 recurso em um banco de dados específico

Na especificação do armazenamento on-line, especifique o nome do banco de dados (database_name) e o nome da tabela (table_name). Se o senhor não especificar esses parâmetros, serão usados o nome do banco de dados off-line e o nome da tabela de recurso. database_name já deve existir no armazenamento on-line.

Python
online_store = AmazonRdsMySqlSpec(
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 recurso on-line existente ou linhas específicas

Use mode='overwrite' na chamada publish_table. A tabela on-line é completamente substituída pelos dados na tabela off-line.

nota

O Amazon DynamoDB não oferece suporte ao modo de substituição.

Python
fs.publish_table(
name='recommender_system.customer_features',
online_store=online_store,
mode='overwrite'
)

Para sobrescrever somente algumas linhas, use o argumento filter_condition:

Python
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 armazenamento on-line

Com o cliente Store de recursos v0.12.0e acima, você pode usar drop_online_table para excluir uma tabela publicada de um armazenamento online. Quando você exclui uma tabela publicada com drop_online_table, a tabela é excluída de seu provedor de armazenamento online e os metadados de armazenamento online são removidos do Databricks.

Python
fe.drop_online_table( # or fs.drop_online_table for Workspace Feature Store
name='recommender_system.customer_features',
online_store = online_store
)
nota
  • drop_online_table exclui a tabela publicada do armazenamento on-line. Ele não exclui a tabela de recursos em Databricks.
  • Antes de excluir uma tabela publicada, o senhor deve se certificar de que a tabela não é usada para pesquisa de modelo de recurso e não tem outras dependências downstream. A exclusão é irreversível e pode causar falhas nas dependências.
  • Para verificar se há dependências, considere girar a chave da tabela publicada que o senhor planeja excluir por um dia antes de executar drop_online_table.