Pular para o conteúdo principal

Trabalhar com tabelas de recurso no espaço de trabalho recurso Store (legado)

nota

Esta documentação abrange o recurso Store do espaço de trabalho. Databricks recomenda o uso do recurso engenharia em Unity Catalog. workspace recurso Store será preterido no futuro.

Para obter informações sobre como trabalhar com tabelas de recursos em Unity Catalog, consulte Work with recurso tables in Unity Catalog.

Esta página descreve como criar e trabalhar com tabelas de recurso no espaço de trabalho recurso Store.

nota

Se o seu workspace estiver habilitado para Unity Catalog, qualquer tabela gerenciada por Unity Catalog que tenha um key primário é automaticamente uma tabela de recurso que o senhor pode usar para treinamento e inferência de modelos. Todos os recursos do site Unity Catalog, como segurança, linhagem, marcação e acesso cruzadoworkspace, estão automaticamente disponíveis para a tabela de recursos. Para obter informações sobre como trabalhar com tabelas de recursos em um site Unity Catalog-enabled workspace, consulte Work with recurso tables in Unity Catalog.

Para obter informações sobre o acompanhamento do recurso lineage e freshness, consulte Discover recurso and track recurso lineage in workspace recurso Store (legacy).

nota

Os nomes das tabelas de banco de dados e de recurso podem conter apenas caracteres alfanuméricos e o sublinhado (_).

Criar um banco de dados para tabelas de recurso

Antes de criar qualquer tabela de recurso, o senhor deve criar um banco de dados para armazená-las.

%sql CREATE DATABASE IF NOT EXISTS <database-name>

As tabelas de recurso são armazenadas como tabelasDelta. Ao criar uma tabela de recurso com create_table (recurso Store client v0.3.6 e acima) ou create_feature_table (v0.3.5 e abaixo), o senhor deve especificar o nome do banco de dados. Por exemplo, esse argumento cria uma tabela Delta chamada customer_features no banco de dados recommender_system.

name='recommender_system.customer_features'

Ao publicar uma tabela de recurso em um armazenamento on-line, a tabela default e o nome do banco de dados são os especificados quando a tabela foi criada; é possível especificar nomes diferentes usando o método publish_table.

A UI do Databricks recurso Store mostra o nome da tabela e do banco de dados no armazenamento on-line, juntamente com outros metadados.

Criar uma tabela de recursos em Databricks recurso Store

nota

O senhor também pode registrar uma tabelaDelta existente como uma tabela de recurso. Veja o registro de uma tabela Delta existente como uma tabela de recurso.

As etapas básicas para criar uma tabela de recursos são as seguintes:

  1. Escreva as funções Python para compute o recurso. O resultado de cada função deve ser um Apache Spark DataFrame com um key primário exclusivo. O key primário pode consistir em uma ou mais colunas.
  2. Crie uma tabela de recursos instanciando um FeatureStoreClient e usando create_table (v0.3.6 e acima) ou create_feature_table (v0.3.5 e abaixo).
  3. Preencha a tabela de recursos usando o site write_table.

Para obter detalhes sobre o comando e os parâmetros usados nos exemplos a seguir, consulte a referência do recurso Store Python API.

Python
from databricks.feature_store import feature_table

def compute_customer_features(data):
''' Feature computation code returns a DataFrame with 'customer_id' as primary key'''
pass

# create feature table keyed by customer_id
# take schema from DataFrame output by compute_customer_features
from databricks.feature_store import FeatureStoreClient

customer_features_df = compute_customer_features(df)

fs = FeatureStoreClient()

customer_feature_table = fs.create_table(
name='recommender_system.customer_features',
primary_keys='customer_id',
schema=customer_features_df.schema,
description='Customer features'
)

# An alternative is to use `create_table` and specify the `df` argument.
# This code automatically saves the features to the underlying Delta table.

# customer_feature_table = fs.create_table(
# ...
# df=customer_features_df,
# ...
# )

# To use a composite key, pass all keys in the create_table call

# customer_feature_table = fs.create_table(
# ...
# primary_keys=['customer_id', 'date'],
# ...
# )

# Use write_table to write data to the feature table
# Overwrite mode does a full refresh of the feature table

fs.write_table(
name='recommender_system.customer_features',
df = customer_features_df,
mode = 'overwrite'
)

registro de uma tabela Delta existente como uma tabela de recurso

Com a v0.3.8 e acima, o senhor pode registrar uma tabelaDelta existente como uma tabela de recurso. A tabela Delta deve existir no metastore.

Python
fs.register_table(
delta_table='recommender.customer_features',
primary_keys='customer_id',
description='Customer features'
)

Controle o acesso às tabelas de recursos

Consulte Controle de acesso a tabelas de recurso no espaço de trabalho Recurso Store (legado).

Atualizar uma tabela de recursos

O senhor pode atualizar uma tabela de recursos adicionando novos recursos ou modificando linhas específicas com base no primário key.

Os metadados da tabela de recursos a seguir não podem ser atualizados:

  • Chave primária
  • partitionKey
  • Nome ou tipo de um recurso existente

Adicionar um novo recurso a uma tabela de recursos existente

O senhor pode adicionar novos recursos a uma tabela de recursos existente de duas maneiras:

  • Atualize a função de computação de recurso existente e a execução write_table com o retorno DataFrame. Isso atualiza o esquema da tabela de recursos e mescla novos valores de recurso com base no primário key.
  • Crie uma nova função de computação de recurso para calcular os novos valores de recurso. O DataFrame retornado por essa nova função de computação deve conter a chave primária e a chave de partição das tabelas de recurso (se definidas). execução write_table com o DataFrame para gravar o novo recurso na tabela de recursos existente, usando o mesmo primário key.

Atualizar apenas linhas específicas em uma tabela de recurso

Use mode = "merge" em write_table. As linhas cujo key primário não existe no DataFrame enviado na chamada write_table permanecem inalteradas.

Python
fs.write_table(
name='recommender.customer_features',
df = customer_features_df,
mode = 'merge'
)

Programar um Job para atualizar uma tabela de recursos

Para garantir que as tabelas de recursos tenham sempre os valores mais recentes, o site Databricks recomenda que o senhor crie um trabalho que execute um Notebook para atualizar a tabela de recursos regularmente, por exemplo, todos os dias. Se o senhor já tiver criado um trabalho não programado, poderá convertê-lo em um trabalho programado para garantir que os valores de recurso estejam sempre atualizados. Veja a orquestração usando Databricks Jobs.

O código para atualizar uma tabela de recurso usa mode='merge', conforme mostrado no exemplo a seguir.

Python
fs = FeatureStoreClient()

customer_features_df = compute_customer_features(data)

fs.write_table(
df=customer_features_df,
name='recommender_system.customer_features',
mode='merge'
)

Armazenar valores anteriores do recurso diário

Definir uma tabela de recurso com um primário composto key. Inclua a data no site key. Por exemplo, para uma tabela de recurso store_purchases, o senhor pode usar um primário composto key (date, user_id) e uma partição key date para leituras eficientes.

Python
fs.create_table(
name='recommender_system.customer_features',
primary_keys=['date', 'customer_id'],
partition_columns=['date'],
schema=customer_features_df.schema,
description='Customer features'
)

Em seguida, o senhor pode criar um código para ler a tabela de recursos filtrando date para o período de tempo de interesse.

O senhor também pode criar uma tabela de recurso de série temporal especificando a coluna date como um carimbo de data/hora key usando o argumento timestamp_keys.

Python
fs.create_table(
name='recommender_system.customer_features',
primary_keys=['date', 'customer_id'],
timestamp_keys=['date'],
schema=customer_features_df.schema,
description='Customer timeseries features'
)

Isso permite pesquisas pontuais quando você usa create_training_set ou score_batch. O sistema executa um registro de data e hora join, usando o timestamp_lookup_key que o senhor especificar.

Para manter a tabela de recursos atualizada, configure um Job programado regularmente para gravar recursos ou transmitir novos valores de recursos para a tabela de recursos.

Criar uma computação de transmissão de recurso pipeline para atualizar o recurso

Para criar uma computação de recurso de transmissão pipeline, passe uma transmissão DataFrame como argumento para write_table. Esse método retorna um objeto StreamingQuery.

Python
def compute_additional_customer_features(data):
''' Returns Streaming DataFrame
'''
pass # not shown

customer_transactions = spark.readStream.load("dbfs:/events/customer_transactions")
stream_df = compute_additional_customer_features(customer_transactions)

fs.write_table(
df=stream_df,
name='recommender_system.customer_features',
mode='merge'
)

Ler de uma tabela de recursos

Use o site read_table para ler os valores do recurso.

Python
fs = feature_store.FeatureStoreClient()
customer_features_df = fs.read_table(
name='recommender.customer_features',
)

Pesquisar e procurar tabelas de recursos

Use a UI do recurso Store para pesquisar ou procurar tabelas de recurso.

  1. Na barra lateral, selecione Machine Learning > recurso Store para exibir a interface do usuário do recurso Store.

  2. Na caixa de pesquisa, digite todo ou parte do nome de uma tabela de recursos, um recurso ou uma fonte de dados usada para o cálculo de recursos. O senhor também pode inserir todo ou parte do key ou o valor de uma tag. O texto de pesquisa não diferencia maiúsculas de minúsculas.

    exemplo de pesquisa de recurso

Obter metadados da tabela de recursos

A API para obter metadados da tabela de recursos depende da versão do Databricks Runtime que você está usando. Com v0.3.6e acima, use get_table. Com v0.3.5 e abaixo, use get_feature_table.

Python
# this example works with v0.3.6 and above
# for v0.3.5, use `get_feature_table`
from databricks.feature_store import FeatureStoreClient
fs = FeatureStoreClient()
fs.get_table("feature_store_example.user_feature_table")

Trabalhar com tags de tabela de recurso

As tags são par key-value que o senhor pode criar e usar para pesquisar tabelas de recursos. O senhor pode criar, editar e excluir tags usando a UI do recurso Store ou o recurso Store Python API .

Trabalhar com tags de tabela de recurso na UI

Use a UI do recurso Store para pesquisar ou procurar tabelas de recurso. Para acessar a interface do usuário, na barra lateral, selecione Machine Learning > recurso Store .

Adicionar uma tag usando a UI do recurso Store

  1. Clique Ícone de tag se ainda não estiver aberto. A tabela de tags é exibida.

    tabela de tags

  2. Clique nos campos Name e Value e digite key e o valor da tag.

  3. Clique em Adicionar .

Editar ou excluir uma tag usando a UI do Recurso Store

Para editar ou excluir uma tag existente, use os ícones na coluna Ações .

ações de tag

Trabalhar com tags de tabela de recurso usando o recurso Store Python API

No clustering com a versão 0.4.1 e acima, o senhor pode criar, editar e excluir tags usando o recurso Store Python API .

Requisitos

cliente da loja de recurso v0.4.1e acima

Criar tabela de recurso com tag usando o recurso Store Python API

Python
from databricks.feature_store import FeatureStoreClient
fs = FeatureStoreClient()

customer_feature_table = fs.create_table(
...
tags={"tag_key_1": "tag_value_1", "tag_key_2": "tag_value_2", ...},
...
)

Adicionar, atualizar e excluir tags usando o recurso Store Python API

Python
from databricks.feature_store import FeatureStoreClient
fs = FeatureStoreClient()

# Upsert a tag
fs.set_feature_table_tag(table_name="my_table", key="quality", value="gold")

# Delete a tag
fs.delete_feature_table_tag(table_name="my_table", key="quality")

Atualizar fonte de dados para uma tabela de recursos

O recurso store rastreia automaticamente a fonte de dados usada para compute recurso. O senhor também pode atualizar manualmente a fonte de dados usando o recurso Store Python API .

Requisitos

cliente da loja de recurso v0.5.0e acima

Adicionar fonte de dados usando o recurso Store Python API

abaixo são alguns exemplos de comando. Para obter detalhes, consulte a documentação da API.

Python
from databricks.feature_store import FeatureStoreClient
fs = FeatureStoreClient()

# Use `source_type="table"` to add a table in the metastore as data source.
fs.add_data_sources(feature_table_name="clicks", data_sources="user_info.clicks", source_type="table")

# Use `source_type="path"` to add a data source in path format.
fs.add_data_sources(feature_table_name="user_metrics", data_sources="dbfs:/FileStore/user_metrics.json", source_type="path")

# Use `source_type="custom"` if the source is not a table or a path.
fs.add_data_sources(feature_table_name="user_metrics", data_sources="user_metrics.txt", source_type="custom")

Excluir a fonte de dados usando o recurso Store Python API

Para obter detalhes, consulte a documentação da API.

nota

O comando a seguir exclui fontes de dados de todos os tipos ("table", "path" e "custom") que correspondem aos nomes das fontes.

Python
from databricks.feature_store import FeatureStoreClient
fs = FeatureStoreClient()
fs.delete_data_sources(feature_table_name="clicks", sources_names="user_info.clicks")

Excluir uma tabela de recurso

O senhor pode excluir uma tabela de recurso usando a UI do recurso Store ou o recurso Store Python API .

nota
  • A exclusão de uma tabela de recursos pode levar a falhas inesperadas em produtores upstream e consumidores downstream (modelos, endpoint e trabalho agendado). Você deve excluir lojas online publicadas com seu provedor de nuvem.
  • Quando o senhor exclui uma tabela de recurso usando o API, a tabela subjacente Delta também é descartada. Quando o senhor exclui uma tabela de recurso da UI, deve excluir a tabela subjacente Delta separadamente.

Excluir uma tabela de recurso usando a UI

  1. Na página da tabela de recursos, clique em Botão para baixo à direita do nome da tabela de recursos e selecione Delete (Excluir ). Se o senhor não tiver permissão CAN MANAGE para a tabela de recursos, não verá essa opção.

    Selecione excluir no menu suspenso

  2. Na caixa de diálogo Excluir tabela de recursos, clique em Excluir para confirmar.

  3. Se o senhor também quiser eliminar a tabela subjacente Delta, execute o seguinte comando em um Notebook.

    SQL
    %sql DROP TABLE IF EXISTS <feature-table-name>;

Excluir uma tabela de recurso usando o recurso Store Python API

Com o cliente Feature Store v0.4.1e acima, você pode usar drop_table para excluir uma tabela de recursos. Quando você exclui uma tabela com drop_table, a tabela Delta subjacente também é descartada.

Python
fs.drop_table(
name='recommender_system.customer_features'
)