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

Este artigo descreve como configurar um local externo em Unity Catalog para conectar o armazenamento de cloud a Databricks.

Os locais externos associam as credenciais de armazenamento Unity Catalog aos contêineres de armazenamento de objetos cloud. Os locais externos são usados para definir locais de armazenamento gerencial 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 AWS S3 ou do Cloudflare R2.

O senhor pode criar um local externo usando o Catalog Explorer, o comando Databricks CLI, SQL em um Notebook ou a consulta Databricks SQL, ou Terraform.

Para obter mais informações sobre os usos de locais externos e a relação entre credenciais de armazenamento e locais externos, consulte gerenciar o acesso ao armazenamento cloud usando Unity Catalog.

Antes de começar

Pré-requisitos:

  • O senhor deve criar o bucket do AWS S3 ou do Cloudflare R2 que deseja usar como local externo antes de criar o objeto de local externo no Databricks.

    • O padrão AWS CloudFormation suporta apenas S3 buckets.

    • O nome de um bucket S3 do qual o usuário deseja ler e gravar não pode usar notação de ponto (por exemplo, incorrect.bucket.name.notation). Para obter mais orientações sobre a nomenclatura de buckets, consulte as regras de nomenclatura de buckets da AWS.

    • Evite usar um caminho no S3 que já esteja definido como um local externo em outro metastore do Unity Catalog. O senhor pode ler dados com segurança em um único local externo S3 de mais de um metastore, mas gravações simultâneas no mesmo local S3 de vários metastores podem levar a problemas de consistência.

Requisitos de permissões:

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

  • Se estiver criando um local externo para o local de armazenamento DBFS root, o sistema poderá criar a credencial de armazenamento para o usuário, mas ele deverá ser um administrador do workspace. Para obter detalhes, consulte Criar um local externo para dados em DBFS root

  • Se estiver usando o padrão AWS CloudFormation, o senhor também deve ter o privilégio CREATE STORAGE CREDENTIAL no metastore. Os administradores do metastore têm CREATE STORAGE CREDENTIAL no metastore em default.

Criar um local externo para um bucket S3 usando um padrão AWS CloudFormation

Se o senhor criar um local externo usando o padrão AWS CloudFormation, o Databricks configurará o local externo e criará uma credencial de armazenamento para o senhor. O senhor também tem a opção de criar o local externo manualmente, o que exige que primeiro crie um IAM role que dê acesso ao bucket S3 que é referenciado pelo local externo e uma credencial de armazenamento que faça referência a esse IAM role. Se o senhor quiser criar um local externo a partir de um ponto de montagem existente no site DBFS, DBFS rootou volume existente, será necessário usar a abordagem manual.

Para saber mais sobre credenciais de armazenamento, consulte Criar uma credencial de armazenamento para se conectar ao AWS S3.

Observação

O senhor não pode criar locais externos para buckets do Cloudflare R2 usando o padrão AWS CloudFormation. Em vez disso, use o fluxo manual no Catalog Explorer ou as instruçõesSQL em um Notebook Databricks ou no editor de consultas SQL .

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

Para criar o local externo:

  1. Faça login em um site workspace que esteja anexado ao metastore.

  2. Clique em Ícone de catálogo Catálogo para abrir o Catalog Explorer.

  3. Na página de acesso rápido, clique no botão External data > (Dados externos), vá para External Locations (Locais externos ) tab e clique em Create location (Criar local).

  4. Na caixa de diálogo Criar um novo local externo, selecione AWS Quickstart (Recomendado) e clique em Next.

    O AWS Quickstart configura o local externo e cria uma credencial de armazenamento para o senhor. Se o senhor optar por usar a opção Manual, deverá criar manualmente um IAM role que dê acesso ao bucket S3 e criar a credencial de armazenamento em Databricks.

  5. Na caixa de diálogo Create external location with Quickstart (Criar local externo com início rápido ), digite o caminho para o bucket S3 no campo Bucket Name (Nome do bucket ).

  6. Clique em Generate new tokens (Gerar novos tokens ) para gerar o access token pessoal que o senhor usará para se autenticar entre Databricks e seu AWS account.

  7. Copie os tokens e clique em Launch in Quickstart.

  8. No padrão AWS CloudFormation que é iniciado (rótulo Quick create stack) , cole os tokens no campoDatabricks account Credentials (Credenciais da conta ).

  9. Aceite os termos na parte inferior da página(reconheço que o AWS CloudFormation pode criar o recurso IAM com nomes personalizados).

  10. Clique em Criar pilha.

    Pode levar alguns minutos para que o padrão CloudFormation termine de criar o objeto de localização externa em Databricks.

  11. Retorne ao site Databricks workspace e clique em Catalog para abrir o Catalog Explorer.

  12. Na página de acesso rápido, clique no botão External data > para acessar o site External Locations tab.

  13. Confirme se um novo local externo foi criado.

    Locais externos gerados automaticamente usam a sintaxe de nomenclatura db_s3_external_databricks-S3-ingest-<id>.

  14. (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.

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

    Para que qualquer pessoa use o local externo, você deve conceder permissões:

    • Para usar o local externo para adicionar um local de armazenamento gerenciar 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. Em Permissions (Permissões ) tab, clique em Grant (Conceder).

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

    4. Clique em Conceder.

Crie um local externo manualmente usando o Catalog Explorer

Você pode criar um local externo manualmente usando o Catalog Explorer.

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

Se estiver criando um local externo para um bucket S3, o Databricks recomenda que o senhor use o padrãoAWS CloudFormation em vez do procedimento descrito aqui. Se o senhor usar o padrão AWS CloudFormation, não precisará criar uma credencial de armazenamento. Ele foi criado para você.

Se o senhor quiser criar um local externo a partir de um ponto de montagem, DBFS, DBFS root ou volume existente, será necessário usar a abordagem manual.

Para criar o local externo:

  1. Faça login em um site workspace que esteja anexado ao metastore.

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

  3. Na página de acesso rápido, clique no botão External data > (Dados externos), vá para External Locations (Locais externos ) tab e clique em Create location (Criar local).

  4. Na caixa de diálogo Criar um novo local externo, clique em Manual e depois em Avançar.

    Para saber mais sobre a opção AWS Quickstart, consulte Criar um local externo para um bucket S3 usando um padrão AWS CloudFormation.

  5. Na caixa de diálogo Criar um novo local externo manualmente, insira um nome de local externo.

  6. Em URL, insira ou selecione o caminho para o local externo. Você tem três opções:

    • Para copiar o caminho do contêiner de um ponto de montagem DBFS existente, clique em Copy from DBFS (Copiar do DBFS).

    • Para copiar o subcaminho para o local de armazenamento DBFS root, clique em Copy from DBFS e selecione Copy from DBFS root. Se o senhor for um administrador do workspace, o sistema também criará a credencial de armazenamento para o senhor.

      Consulte Criar um local externo para os dados em DBFS root.

    • Se não estiver copiando de um ponto de montagem existente ou de DBFS root, use o campo URL para inserir o caminho do bucket S3 ou R2 que deseja usar como local externo.

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

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

    Observação

    Se o seu local externo for o DBFS root e o senhor for um administrador do workspace, o sistema criará a credencial de armazenamento para o senhor e não será necessário selecionar uma.

    Se você não tiver uma credencial de armazenamento, poderá criar uma:

    1. Na lista suspensa Credencial de armazenamento, selecione + Criar nova credencial de armazenamento.

    2. Na lista suspensa Credential type (Tipo de credencial ), selecione o tipo de credencial que deseja usar no objeto de credencial de armazenamento: AWS IAM role ou tokens Cloudflare API.

    3. Para a função IAM, forneça a IAM role ARN que dá acesso ao local de armazenamento. Para Cloudflare API tokens, insira o Cloudflare account, acesse key ID e acesso secreto key.

      Para obter mais informações, consulte Criar uma credencial de armazenamento para se conectar a AWS S3ou Criar uma credencial de armazenamento para se conectar ao Cloudflare R2.

  8. (Opcional) Se você quiser que os usuários tenham acesso somente para 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. (Opcional) Se o local externo for destinado à migração de carga de trabalho herdada, clique em Advanced options (Opções avançadas ) e ative o modo de fallback.

    Consulte Ativar o modo de fallback em locais externos.

  10. (Opcional) Se o bucket S3 exigir criptografia SSE, o senhor poderá configurar um algoritmo de criptografia para permitir que tabelas e volumes externos no Unity Catalog acessem os dados no bucket S3.

    Para obter instruções, consulte Configurar um algoritmo de criptografia em um local externo.

  11. Clique em Criar.

  12. (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.

  13. Acesse o site Permissions (Permissões ) tab para conceder permissão para usar o local externo.

    Para que qualquer pessoa use o local externo, você deve conceder permissões:

    • Para usar o local externo para adicionar um local de armazenamento gerenciar 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.

    1. Clique em Conceder.

    2. Na caixa de diálogo Grant on <external location>, selecione usuários, grupos ou entidade de serviço no campo Principals e selecione o privilégio que deseja conceder.

    3. Clique em Conceder.

Criar um local externo usando o 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. Para obter as permissões e os pré-requisitos necessários, consulte Antes de começar.

  • <location-name>: um nome para o local externo. Se location_name incluir caracteres especiais, como hífens (-), ele deverá estar entre acentos invertidos ( ` ` ). Veja os nomes.

  • <bucket-path>: O caminho em seu cloud tenant ao qual esse local externo concede acesso. Por exemplo, S3://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á estar entre acentos invertidos ( ` ` ).

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

Se o senhor 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

Prévia

Este 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

Os vínculos do espaço de trabalho 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 's3://bucket/path/to/table' 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:

  • A localização externa que cobre 's3://bucket/path/to/table' está vinculada a myWorkspace?

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

Se a localização externa for subseqüentemente desvinculada 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 Catálogo.

  3. Na página de acesso rápido, clique no botão External data > para acessar o site External Locations tab.

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

  5. Na guia Workspaces, desmarque a caixa de seleção Todos os workspaces 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 Atribuir a workspaces e digite ou localize os workspaces que deseja atribuir.

Para revogar o acesso, vá para a tab Workspaces, selecione o workspace e clique em Revogar. Para permitir o acesso de todos os workspaces, marque a caixa de seleção Todos os workspaces 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 seu 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 do workspace e da ID do workspace em que você gerou o access token pessoal. Consulte Autenticação de token de acesso pessoal do Databricks.

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

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

    O padrão isolation-mode é OPEN para todos os workspaces anexados ao metastore.

  2. Use o comando workspace-bindings do grupo de comando 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 vinculações de workspace.

    Observação

    A vinculação somente para 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