Pular para o conteúdo principal

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

Este artigo descreve como configurar um objeto de local externo em Unity Catalog para controlar o acesso ao armazenamento em nuvem a partir de Databricks.

Visão geral dos locais externos

Locais externos associam credenciais de armazenamento a contêineres de armazenamento de objetos na nuvem. Locais externos são usados para definir:

Os locais externos podem fazer referência ao armazenamento em um bucket do Google Cloud Storage (GCS), bucket do AWS S3 ou bucket do Cloudflare R2.

O diagrama abaixo representa a hierarquia do sistema de arquivos de um único bucket ou contêiner de armazenamento em nuvem, com quatro locais externos que compartilham uma credencial de armazenamento.

Localizações externas

Visão geral da criação de localização externa

Você pode usar qualquer uma das seguintes interfaces para criar um local externo:

  1. Explorador de Catálogos

    Essa opção fornece uma interface gráfica. O senhor pode usar o Catalog Explorer para criar locais externos que fazem referência a buckets GCS, buckets S3 (somente leitura), buckets Cloudflare R2 e DBFS root (legado)

  2. SQL comando em uma consulta do Notebook ou Databricks SQL

  3. A CLI da Databricks

  4. Terraform

Este artigo aborda as opções 1 e 2.

nota

O armazenamento de dados no local de DBFS root O armazenamento de dados no local de armazenamento é uma prática antiga e o site Databricks recomenda que o senhor não a faça. No entanto, se o seu workspace armazena dados em DBFS root, o senhor pode criar um local externo para controlar o acesso a esse uso de dados Unity Catalog. Para obter detalhes, consulte Criar um local externo para dados em DBFS root (legado).

Para obter mais informações sobre os usos de locais externos e a relação entre credenciais de armazenamento e locais externos, consulte Conectar-se ao armazenamento de objetos na nuvem usando Unity Catalog.

Antes de começar

Pré-requisitos :

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

    • Não use notação de ponto (por exemplo, incorrect.bucket.name.notation) nos nomes de buckets do S3. Embora o AWS permita pontos em nomes de buckets, a Databricks não oferece suporte a buckets S3 com notação de pontos. Os buckets que contêm pontos podem causar problemas de compatibilidade com recursos como Delta Sharing devido a falhas na validação do certificado SSL. Para obter mais informações, consulte as práticas recomendadas de nomenclatura de buckets emAWS.

    • Os caminhos de localização externos devem conter somente caracteres ASCII padrão (letras A–Z, a–z, dígitos 0–9 e símbolos comuns como /, _, -).

    • O bucket não pode ter uma lista de controle de acesso S3 anexada a ele.

  • O senhor deve ter uma credencial de armazenamento definida no Databricks que dê acesso ao caminho do local de armazenamento na nuvem. Consulte Criar uma credencial de armazenamento para se conectar ao Google Cloud Storage, Criar uma credencial de armazenamento para se conectar ao Cloudflare R2 ou Criar uma credencial de armazenamento para se conectar ao AWS S3 (somente leitura).

  • O espaço de nomes hierárquico (HNS) do Google Cloud Storage não é compatível com locais externos. Desative o namespace hierárquico antes de criar um local externo.

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 (legado)

Opção 1: criar um local externo 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.

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 dados. 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. Insira um nome de localização externa .

  5. Selecione o tipo de armazenamento : GCS , S3 (Read-only) , R2 ou DBFS root .

    O armazenamento de dados em DBFS root é uma prática legada e não recomendada. Para obter detalhes, consulte Criar um local externo para dados em DBFS root (legado).

  6. Em URL , insira ou selecione o caminho para o local externo.

    Para GCS, S3 e R2, o senhor tem as seguintes opções:

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

    • Se você não estiver copiando de um ponto de montagem existente, use o campo URL para inserir o caminho do contêiner ou bucket que você deseja usar como local externo.

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

    Para DBFS root:

    • O sistema preenche o subcaminho para o local de armazenamento 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 (legado).

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

nota

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. As informações de credenciais que o senhor insere dependem do tipo de armazenamento:

    Para GCS, um serviço GCP account é criado automaticamente quando o senhor salva o local externo. Consulte Criar uma credencial de armazenamento que acesse o GCS.

    Para Cloudflare API tokens, insira o Cloudflare account, acesse key ID e acesso secreto key. Consulte Criar uma credencial de armazenamento para se conectar ao Cloudflare R2.

    Para AWS S3, digite o endereço IAM role ARN que dá acesso ao local de armazenamento. Consulte Criar uma credencial de armazenamento para se conectar ao AWS S3 (somente leitura).

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

    Os locais externos que fazem referência aos caminhos do AWS S3 são inerentemente somente leitura.

  4. (Opcional) Se o local externo for destinado a um catálogo federado Hive metastore, clique em Advanced options (Opções avançadas ) e ative o modo de fallback .

    Consulte Ativar o modo de fallback em locais externos.

  5. (Opcional, somente para locais do AWS S3) Se o bucket do 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 do S3.

    Para obter instruções, consulte Configurar um algoritmo de criptografia em um local externo (somente AWS S3).

  6. (Opcional) Para ativar a capacidade de se inscrever para receber notificações de alteração no local externo, clique em Opções avançadas e selecione Habilitar eventos de arquivo .

    Para obter detalhes, consulte (Recomendado) Habilitar eventos de arquivo para um local externo.

  7. Clique em Criar .

  8. (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, acesse o espaço de trabalho tab e atribua o espaço de trabalho. Consulte (Opcional) Atribuir um local externo a um espaço de trabalho específico.

  9. Acesse 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 .

Opção 2: 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 sua nuvem 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á estar entre acentos invertidos ( ).

SQL
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

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.

important

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 '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:

  • A localização externa que cobre 'gs://mybucket/<path>' 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, proprietário do local externo ou MANAGE no local externo.

nota

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 dados. 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 .

Desvincular um local externo de um workspace

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óximas etapas

Esse artigo foi útil?