Partilhar via


Compartilhar a funcionalidade tables entre espaços de trabalho (legado)

Importante

  • Esta documentação foi desativada e pode não ser atualizada.
  • Databricks recomenda o uso do Engenharia de Características no Unity Catalog para partilhar funcionalidades tables entre diferentes espaços de trabalho. A abordagem neste artigo foi preterida.

O Azure Databricks dá suporte ao uso compartilhado do recurso tables em vários espaços de trabalho. Por exemplo, a partir do seu próprio espaço de trabalho, pode criar, escrever ou ler de uma funcionalidade table num repositório centralizado de funcionalidades. Isso é útil quando várias equipas compartilham acesso ao recurso tables ou quando a sua organização tem vários espaços de trabalho para gerir diferentes estágios de desenvolvimento.

Para um repositório de recursos centralizado, o Databricks recomenda que você designe um único espaço de trabalho para armazenar todos os metadados do repositório de recursos e crie contas para cada usuário que precise acessar o repositório de recursos.

Se suas equipes também estiverem modelos de compartilhamento entre espaços de trabalho, você pode optar por dedicar o mesmo espaço de trabalho centralizado para tables de recursos e modelos, ou pode especificar diferentes espaços de trabalho centralizados para cada um.

Vários espaços de trabalho de armazenamento de recursos

O acesso ao repositório de recursos centralizado é controlado por tokens. Cada usuário ou script que precisa de acesso cria um token de acesso pessoal no repositório de recursos centralizado e copia esse token para o gerenciador secreto de seu espaço de trabalho local. Cada solicitação de API enviada para o espaço de trabalho centralizado do repositório de recursos deve incluir o token de acesso; o cliente do Feature Store fornece um mecanismo simples para especificar os segredos a serem usados ao executar operações entre espaços de trabalho.

Nota

Como prática recomendada de segurança, quando você se autentica com ferramentas, sistemas, scripts e aplicativos automatizados, o Databricks recomenda que você use tokens de acesso pessoal pertencentes a entidades de serviço em vez de usuários do espaço de trabalho. Para criar tokens para entidades de serviço, consulte Gerenciar tokens para uma entidade de serviço.

Requisitos

O uso de um repositório de recursos em espaços de trabalho exige:

  • Cliente do Feature Store v0.3.6 e superior.
  • Ambos os espaços de trabalho devem ter acesso aos dados brutos do recurso. Eles devem compartilhar o mesmo metastore externo do Hive e ter acesso ao mesmo armazenamento DBFS.
  • Se as listas de acesso IP estiverem habilitadas, os endereços IP do espaço de trabalho deverão estar nas listas de acesso.

Set configurar o token de API para um registo remoto

Nesta seção, "Espaço de trabalho B" refere-se ao espaço de trabalho de armazenamento de recursos centralizado ou remoto.

  1. No Espaço de Trabalho B, crie um token de acesso.
  2. No espaço de trabalho local, crie segredos para armazenar o token de acesso e informações sobre o Espaço de Trabalho B:
    1. Crie um escopo secreto: databricks secrets create-scope --scope <scope>.
    2. Escolha um identifier exclusivo para o Espaço de Trabalho B, mostrado aqui como <prefix>. Em seguida, crie três segredos com os nomes de chave especificados:
      • databricks secrets put --scope <scope> --key <prefix>-host : Introduza o nome do host da área de trabalho B. Use os seguintes comandos Python para get o nome do host de uma área de trabalho:

        import mlflow
        
        host_url = mlflow.utils.databricks_utils.get_webapp_url()
        host_url
        
      • databricks secrets put --scope <scope> --key <prefix>-token : Insira o token de acesso do Espaço de Trabalho B.

      • databricks secrets put --scope <scope> --key <prefix>-workspace-id : Insira o ID do espaço de trabalho para o espaço de trabalho B, que pode ser encontrado no URL de qualquer página.

Nota

Talvez você queira compartilhar o escopo secreto com outros usuários, já que há uma limit no número de escopos secretos por espaço de trabalho.

Especificar um repositório de recursos remoto

Com base no escopo secreto e no prefixo de nome que você criou para o espaço de trabalho de armazenamento de recursos remoto, você pode construir um URI de repositório de recursos do formulário:

feature_store_uri = f'databricks://<scope>:<prefix>'

Em seguida, especifique o URI explicitamente quando você instanciar um FeatureStoreClient:

fs = FeatureStoreClient(feature_store_uri=feature_store_uri)

Criar uma base de dados para a funcionalidade tables no local partilhado do DBFS

Antes de criar a funcionalidade tables no repositório de funcionalidades remoto, deve-se criar uma base de dados para armazená-las. O banco de dados deve existir no local compartilhado do DBFS.

Por exemplo, para criar um banco de dados recommender no local /mnt/sharedcompartilhado, use o seguinte comando:

%sql CREATE DATABASE IF NOT EXISTS recommender LOCATION '/mnt/shared'

Criar a funcionalidade table no repositório remoto de funcionalidades.

A API para criar uma funcionalidade table numa loja de funcionalidades remota depende da versão de runtime do Databricks que está a usar.

V0.3.6 e superior

Use a FeatureStoreClient.create_table API:

fs = FeatureStoreClient(feature_store_uri=f'databricks://<scope>:<prefix>')
fs.create_table(
  name='recommender.customer_features',
  primary_keys='customer_id',
  schema=customer_features_df.schema,
  description='Customer-keyed features'
)

V0.3.5 e inferior

Use a FeatureStoreClient.create_feature_table API:

fs = FeatureStoreClient(feature_store_uri=f'databricks://<scope>:<prefix>')
fs.create_feature_table(
  name='recommender.customer_features',
  keys='customer_id',
  schema=customer_features_df.schema,
  description='Customer-keyed features'
)

Para obter exemplos de outros métodos do Feature Store, consulte Exemplo do Bloco de Anotações: Compartilhar a funcionalidade tables entre espaços de trabalho.

Usar um recurso table do repositório de recursos remoto

Pode ler uma característica table na loja de funcionalidades remota com o método FeatureStoreClient.read_table, começando por definir o feature_store_uri:

fs = FeatureStoreClient(feature_store_uri=f'databricks://<scope>:<prefix>')
customer_features_df = fs.read_table(
  name='recommender.customer_features',
)

Outros métodos auxiliares para acessar o recurso table também são suportados:

fs.read_table()
fs.get_feature_table() # in v0.3.5 and below
fs.get_table() # in v0.3.6 and above
fs.write_table()
fs.publish_table()
fs.create_training_set()

Usar um registro de modelo remoto

Além de especificar um URI de repositório de recursos remoto, você também pode especificar um URI de registro de modelo remoto para compartilhar modelos entre espaços de trabalho.

Para especificar um registro de modelo remoto para registro em log ou pontuação de modelo, você pode usar um URI de registro de modelo para instanciar um FeatureStoreClient.

fs = FeatureStoreClient(model_registry_uri=f'databricks://<scope>:<prefix>')
customer_features_df = fs.log_model(
    model,
    "recommendation_model",
    flavor=mlflow.sklearn,
    training_set=training_set,
    registered_model_name="recommendation_model"
)

Usando feature_store_uri e model_registry_uri, você pode treinar um modelo usando qualquer recurso local ou remoto tablee, em seguida, registrar o modelo em qualquer registro de modelo local ou remoto.

fs = FeatureStoreClient(
    feature_store_uri=f'databricks://<scope>:<prefix>',
    model_registry_uri=f'databricks://<scope>:<prefix>'
)

Exemplo de Caderno: partilhar a funcionalidade tables entre espaços de trabalho

O bloco de anotações a seguir mostra como trabalhar com um repositório de recursos centralizado.

Bloco de anotações de exemplo do Repositório de Recursos Centralizado

Get portátil