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 AWS S3 ou do Cloudflare R2.

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

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 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 é compatível apenas com buckets S3.

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

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.

  • 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 do AWS CloudFormation

Se o senhor criar um local externo usando o padrão AWS CloudFormation, a 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 referenciado pelo local externo e uma credencial de armazenamento que faça referência a esse IAM role. Para obter detalhes, 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 instruções SQL em um Databricks Notebook ou editor de consulta SQL.

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

Para criar o local externo:

  1. Abra um workspace anexado ao metastore.

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

  3. Clique no botão + Adicionar e selecione Adicionar um local externo.

  4. Na caixa de diálogo Criar um novo local externo , selecione AWS Quickstart (recomendado) e clique em Avançar.

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

  5. Na caixa de diálogo Criar local externo com início rápido , insira o caminho para o bucket S3 no campo Nome do bucket .

  6. Clique em Gerar novos tokens para gerar os access tokens pessoal que você usará para autenticar entre o Databricks e sua account AWS.

  7. Copie os tokens e clique em Iniciar no Início rápido.

  8. No padrão AWS CloudFormation que inicia (rótulo Quick create stack), cole os tokens no campo Credenciais account do Databricks .

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

  10. Clique em Criar pilha.

    Pode levar alguns minutos para que o padrão do CloudFormation conclua a criação do objeto de localização externa no Databricks.

  11. Retorne ao seu workspace do Databricks e clique em Catálogo para abrir o Catalog Explorer.

  12. No painel esquerdo do Catalog Explorer, role para baixo e clique em Dados Externos > Locais Externos.

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

Se estiver criando um local externo para um bucket S3, a Databricks recomenda que o senhor use o padrão AWS 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 o senhor.

Para criar o local externo:

  1. Clique em Catálogo para abrir o Catalog Explorer.

  2. Clique no botão + Adicionar e selecione Adicionar um local externo.

  3. Na caixa de diálogo Criar um novo local externo , clique em Manual e 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 do AWS CloudFormation.

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

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

  6. Se não estiver copiando de um ponto de montagem existente, 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.

  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. 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, 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á 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>'];

Próximos passos