Criar um local externo para conectar o armazenamento em nuvem ao Databricks

Este artigo descreve como configurar um local externo no Unity Catalog para conectar o armazenamento em nuvem ao Databricks.

Locais externos associam credenciais de armazenamento do Unity Catalog a contêineres de armazenamento de objetos clouds . Locais externos são usados para definir locais de armazenamento de gerenciamento para catálogos e esquemas e para definir locais para tabelas externas e volumes externos.

O senhor pode criar um local externo que faça referência ao armazenamento em um bucket do Google Cloud Storage (GCS) ou do Cloudflare R2.

Você pode criar um local externo usando o Catalog Explorer, a CLI do Databricks ou o comando SQL em uma Notebook ou do Databricks SQL query Databricks.

Observação

Quando o senhor define um volume, o acesso do URI de nuvens aos dados no caminho do volume é regido pelas permissões do volume.

Antes de começar

Pré-requisitos:

  • O senhor deve criar o bucket do Google Cloud Storage (GCS) ou do Cloudflare R2 que deseja usar como local externo antes de criar o objeto de local externo no Databricks.

Requisitos de permissões:

  • O senhor deve ter o privilégio CREATE EXTERNAL LOCATION tanto no metastore quanto na credencial de armazenamento referenciada no local externo. Os administradores do metastore têm CREATE EXTERNAL LOCATION no metastore em default.

Criar um local externo manualmente usando o Catalog Explorer

O senhor pode criar um local externo manualmente usando o Catalog Explorer.

Permissões e pré-requisitos: consulte Antes de começar.

Para criar o local externo:

  1. log in para um workspace que está anexado ao metastore.

  2. Na barra lateral, clique em Ícone de catálogo Catalog.

  3. Na parte superior do painel Catálogo, clique no ícone Ícone de adição ou de mais Add e selecione Add an external location (Adicionar um local externo ) no menu.

    Como alternativa, na página Quick access (Acesso rápido ), clique no botão External data > (Dados externos ), acesse External Locations (Locais externos ) tab e clique em Create location (Criar local).

  4. Insira um nome de local externo.

  5. Opcionalmente, copie o caminho do bucket de um ponto de montagem existente (somente buckets GCS).

  6. Se não estiver copiando de um ponto de montagem existente, use o campo URL para inserir o caminho do bucket que deseja usar como local externo.

    Por exemplo, gs://mybucket/<path> ou r2://mybucket@my-account-id.r2.cloudflarestorage.com/<path>.

  7. Selecione a credencial de armazenamento que concede acesso ao local externo.

  8. (Opcional) Se desejar que os usuários tenham acesso somente leitura ao local externo, clique em Opções avançadas e selecione Somente leitura. Para obter mais informações, consulte Marcar um local externo como somente leitura.

  9. Clique em Criar.

  10. (Opcional) Vincule o local externo a um espaço de trabalho específico.

    Em default, qualquer usuário privilegiado pode usar o local externo em qualquer workspace anexado ao metastore. Se o senhor quiser permitir o acesso somente a partir de um espaço de trabalho específico, vá para o espaço de trabalho tab e atribua o espaço de trabalho. Consulte (Opcional) Atribuir um local externo a espaços de trabalho específicos.

  11. Conceda permissão para usar o local externo.

    Para que qualquer pessoa possa usar o local externo você deve conceder permissões:

    • Para usar o local externo para adicionar um local de armazenamento de gerenciamento ao metastore, catálogo ou esquema, conceda o privilégio CREATE MANAGED LOCATION .

    • Para criar tabelas ou volumes externos, conceda CREATE EXTERNAL TABLE ou CREATE EXTERNAL VOLUME.

    Para usar o Catalog Explorer para conceder permissões:

    1. Clique no nome do local externo para abrir o painel de detalhes.

    2. Na Permissões tab, clique em Conceder .

    3. Na caixa de diálogo Conceder em <external location> , selecione usuários, grupos ou entidade de serviço no campo Principais e selecione o privilégio que deseja conceder.

    4. Clique em Conceder.

Crie um local externo usando SQL

Para criar um local externo usando SQL, execute o seguinte comando em um Notebook ou no editor de consultas SQL. Substitua os valores do espaço reservado.

Permissões e pré-requisitos: consulte Antes de começar.

  • <location-name>: Um nome para o local externo. Se location_name incluir caracteres especiais, como hífens (-), ele deverá ser cercado por pontos ( ` ` ). Veja os nomes.

  • <bucket-path>: O caminho em suas nuvens tenant ao qual esse local externo concede acesso. Por exemplo, gs://mybucket ou r2://mybucket@my-account-id.r2.cloudflarestorage.com.

  • <storage-credential-name>: O nome da credencial de armazenamento que autoriza a leitura e a gravação no bucket. Se o nome da credencial de armazenamento incluir caracteres especiais, como hífens (-), ele deverá ser cercado por pontos traseiros ( ` ` ).

CREATE EXTERNAL LOCATION [IF NOT EXISTS] `<location-name>`
URL '<bucket-path>'
WITH ([STORAGE] CREDENTIAL `<storage-credential-name>`)
[COMMENT '<comment-string>'];

Se quiser limitar o acesso de um local externo a um espaço de trabalho específico em seu account, também conhecido como workspace binding ou external location isolation, consulte (Optional) Assign an external location to specific workspace.

(Opcional) Atribuir um local externo a um espaço de trabalho específico

Visualização

Esse recurso está em visualização pública.

Em default, um local externo é acessível a partir de todo o espaço de trabalho no metastore. Isso significa que, se um usuário tiver recebido um privilégio (como READ FILES) nesse local externo, ele poderá exercer esse privilégio em qualquer workspace anexado ao metastore. Se o senhor usa o espaço de trabalho para isolar o acesso aos dados do usuário, talvez queira permitir o acesso a um local externo somente a partir de um espaço de trabalho específico. Esse recurso é conhecido como workspace binding ou isolamento de local externo.

Os casos de uso típicos para vincular um local externo a um espaço de trabalho específico incluem:

  • Garantir que o engenheiro de dados que tem o privilégio CREATE EXTERNAL TABLE em um local externo que contém dados de produção possa criar tabelas externas nesse local somente em uma produção workspace.

  • Garantir que o engenheiro de dados que tem o privilégio READ FILES em um local externo que contém dados confidenciais só possa usar um espaço de trabalho específico para acessar esses dados.

Para obter mais informações sobre como restringir outros tipos de acesso a dados pelo site workspace, consulte Limitar o acesso do catálogo a um espaço de trabalho específico.

Importante

workspace são referenciados no momento em que os privilégios em relação ao local externo são exercidos. Por exemplo, se um usuário criar uma tabela externa emitindo a instrução CREATE TABLE myCat.mySch.myTable LOCATION 'gs://mybucket/<path>' a partir do myWorkspace workspace serão realizadas as seguintes verificações de vinculação workspace, além das verificações regulares de privilégio de usuário:

  • O local externo que cobre 'gs://mybucket/<path>' está vinculado a myWorkspace?

  • O catálogo myCat está vinculado a myWorkspace com nível de acesso Read & Write?

Se o local externo for posteriormente desvinculado de myWorkspace, a tabela externa continuará funcionando.

Esse recurso também permite que o senhor preencha um catálogo a partir de um site central workspace e o disponibilize para outros espaços de trabalho usando associações de catálogos, sem precisar disponibilizar o local externo nesses outros espaços de trabalho.

Vincular um local externo a um ou mais espaços de trabalho

Para atribuir um local externo a um espaço de trabalho específico, o senhor pode usar o Catalog Explorer ou o site Databricks CLI.

Permissões necessárias: Administrador do metastore ou proprietário do local externo.

Observação

Os administradores do metastore podem ver todos os locais externos em um metastore usando o Catalog Explorer, e os proprietários de locais externos podem ver todos os locais externos que possuem em um metastore, independentemente de o local externo estar atribuído ao workspace atual. Os locais externos que não estão atribuídos ao workspace aparecem em cinza.

  1. Efetue login em um workspace vinculado ao metastore.

  2. Na barra lateral, clique em Ícone de catálogo Catalog.

  3. Na parte superior do painel Catálogo, clique no ícone de engrenagem ícone de engrenagem e selecione External Locations (Locais externos).

    Como alternativa, na página Quick access (Acesso rápido ), clique no botão External data > (Dados externos > ) para ir para External Locations (Locais externos ) tab.

  4. Selecione o local externo e acesse o espaço de trabalho tab.

  5. No espaço de trabalho tab, desmarque a caixa de seleção All workspace have access (Todos os espaços de trabalho têm acesso ).

    Se o local externo já estiver vinculado a um ou mais espaços de trabalho, essa caixa de seleção já estará desmarcada.

  6. Clique em Assign to workspace (Atribuir ao espaço de trabalho) e digite ou localize o espaço de trabalho que deseja atribuir.

Para revogar o acesso, acesse o espaço de trabalho tab, selecione workspace e clique em Revoke. Para permitir o acesso de todos os espaços de trabalho, marque a caixa de seleção Todos os espaços de trabalho têm acesso.

Há dois grupos de Databricks CLI grupos de comando e dois passos necessários para atribuir uma localização externa a um workspace.

Nos exemplos a seguir, substitua <profile-name> pelo nome do perfil de configuração de autenticação do Databricks. Ele deve incluir o valor de um access token pessoal, além do nome da instância workspace e o ID workspace do workspace onde o senhor gerou o access token pessoal. Consulte Databricks autenticação pessoal access token .

  1. Use o comando external-locations do grupo update para definir os comandos isolation mode e ISOLATED do local externo:

    databricks external-locations update <my-location> \
    --isolation-mode ISOLATED \
    --profile <profile-name>
    

    O endereço default isolation-mode é OPEN para todos os espaços de trabalho anexados ao metastore.

  2. Use o comando workspace-bindings do grupo update-bindings para atribuir o espaço de trabalho ao local externo:

    databricks workspace-bindings update-bindings external-location <my-location> \
    --json '{
      "add": [{"workspace_id": <workspace-id>}...],
      "remove": [{"workspace_id": <workspace-id>}...]
    }' --profile <profile-name>
    

    Use as propriedades "add" e "remove" para adicionar ou remover workspace bindings.

    Observação

    A vinculação somente leitura (BINDING_TYPE_READ_ONLY) não está disponível para locais externos. Portanto, não há motivo para definir binding_type para a vinculação de locais externos.

Para listar todas as atribuições de workspace para um local externo, use o comando workspace-bindings do grupo get-bindings:

databricks workspace-bindings get-bindings external-location <my-location> \
--profile <profile-name>

Consulte também Workspace Bindings na referência da API REST.

Desvincular um local externo de um espaço de trabalho

As instruções para revogar o acesso workspace a um local externo usando o Catalog Explorer ou o grupo de comando workspace-bindings CLI estão incluídas em Vincular um local externo a um ou mais espaços de trabalho.

Próximos passos