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.

DynamoDB support is available in all versions of Feature Engineering in Unity Catalog client, and Feature Store client v0.3.8 and above.

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.