Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esta página descreve como se conectar a um local externo do ADLS Gen2 (Azure Data Lake Storage Gen2). Depois de concluir essa conexão, você pode controlar o acesso a esses objetos do ADLS Gen2 usando o Catálogo do Unity.
Para se conectar a um caminho de contêiner do ADLS Gen2, você precisa de dois objetos protegíveis do Catálogo do Unity. A primeira é uma credencial storage, que especifica uma identidade gerenciada Azure que permite o acesso ao contêiner do ADLS Gen2. Você precisa dessa credencial de armazenamento para o segundo objeto necessário: um local externo, que define o caminho para o local de armazenamento do ADLS Gen2 e as credenciais necessárias para acessar esse local.
Requirements
Em Azure Databricks:
- Azure Databricks workspace habilitado com o Unity Catalog.
- Privilégio
CREATE STORAGE CREDENTIALno metastore do Catálogo do Unity anexado ao workspace. Os administradores de conta e administradores de metastore têm esse privilégio por padrão. -
CREATE EXTERNAL LOCATIONo privilégio no metastore do Unity Catalog e na credencial de armazenamento referenciada pelo local externo. Os administradores do Metastore e os administradores do workspace têm esse privilégio por padrão.
Em sua conta de Azure:
Uma conta de armazenamento do ADLS Gen2 e um contêiner. Para evitar cobranças de saída, isso deve estar na mesma região do workspace do qual você deseja acessar os dados.
Os caminhos de localização externos devem conter apenas caracteres ASCII padrão (letras
A–Z,a–zdígitos0–9e símbolos comuns, como/,_, ).-As contas de armazenamento do Azure Data Lake Storage que você usa como locais externos devem ter um namespace hierárquico.
Você não pode usar contêineres de armazenamento do Azure com políticas de imutabilidade (WORM – Gravar uma vez, Ler Muitos) habilitadas como locais externos. O Catálogo do Unity requer permissões DELETE em contêineres de armazenamento, o que as políticas de imutabilidade impedem. Para obter mais informações sobre políticas de imutabilidade, consulte Configurar políticas de imutabilidade para contêineres.
Se o acesso à rede pública estiver desabilitado na conta de armazenamento, você deverá habilitar a opção Permitir serviços confiáveis do Azure para permitir que o Azure Databricks se conecte à conta de armazenamento. Você pode definir essa configuração usando a CLI do Azure:
# Check current network rule set az storage account show --name <storage_account_name> --resource-group <resource_group_name> --query "networkRuleSet" # Set bypass for Azure Services az storage account update \ --name <storage_account_name> \ --resource-group <resource_group_name> \ --bypass AzureServices
Permissão para criar um conector de acesso para Azure Databricks em sua assinatura Azure. Para fazer isso, você deve ser um
ContributorouOwnerde um grupo de recursos Azure.Permissão para modificar a política de acesso para a conta de armazenamento. Para fazer isso, você deve ser o proprietário ou um usuário com a função
User Access Administratordo Azure RBAC na sua conta de armazenamento.
Criar uma credencial de armazenamento que acesse o ADLS Gen2
Para criar uma credencial de armazenamento para acesso a um contêiner do ADLS Gen2, primeiro crie um conector de acesso para Azure Databricks com uma identidade gerenciada e conceda à identidade gerenciada acesso à sua conta de armazenamento.
Step 1: criar um conector de acesso para Azure Databricks
Um conector de acesso para Azure Databricks é um recurso de Azure de primeira parte que permite conectar identidades gerenciadas a uma conta Azure Databricks. Cada conector de acesso do Azure Databricks pode incluir uma identidade gerenciada atribuída pelo sistema, uma ou mais identidades gerenciadas atribuídas pelo usuário ou ambas.
Faça logon no portal do Azure como Colaborador ou Proprietário de um grupo de recursos.
Clique em + Criar ou Criar um recurso.
Pesquise Access Connector para Azure Databricks e selecione-o.
Clique em Criar.
Na guia Básico, aceite, selecione e insira valores para os seguintes campos:
- Subscription: esta é a assinatura Azure na qual o conector de acesso será criado. O padrão é a assinatura Azure que você está usando no momento. Ela pode ser qualquer assinatura no locatário.
- Resource group: esse é o grupo de recursos Azure no qual o conector de acesso será criado.
- Nome: insira um nome que indica a finalidade do conector.
- Região: essa deve ser a mesma região que a conta de armazenamento à qual você se conectará.
Clique em Próximo, insira tags e clique em Próximo.
Na guia Identidade Gerenciada, crie as identidades gerenciadas da seguinte maneira:
- Para usar uma identidade gerenciada atribuída pelo sistema, defina Status como Ativado.
- Para adicionar identidades gerenciadas atribuídas pelo usuário, clique em + Adicionar e selecione uma ou mais identidades gerenciadas atribuídas pelo usuário.
Clique em Revisar + Criar.
Examine as configurações e clique em Criar.
Quando a implantação estiver concluída, selecione Ir para o recurso.
Anote a ID do Recurso.
A ID do recurso está no formato:
/subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
Etapa 2: conceder o acesso da identidade gerenciada à conta de armazenamento
Para conceder as permissões nesta etapa, você deve ter a função de RBAC do Azure, como Owner ou User Access Administrator, na sua conta de armazenamento.
Você tem as seguintes opções ao conceder acesso de identidade gerenciada à conta de armazenamento e ao contêiner:
- Conceda acesso de leitura e gravação a toda a conta de armazenamento usando a
Storage Blob Data Contributorfunção. - Conceda uma função mais limitada na conta de armazenamento usando a função
Storage Blob Delegatore acesso de leitura e gravação a um contêiner específico usando a funçãoStorage Blob Data Contributor.
As instruções a seguir pressupõem que você está concedendo a Storage Blob Data Contributor função na conta de armazenamento, mas você pode substituir as outras opções conforme necessário:
- Faça logon em sua conta do Azure Data Lake Storage.
- Vá para Controle de Acesso (IAM), clique em + Adicionar e selecione Adicionar atribuição de função.
- Selecione a função Colaborador de Dados do Blob de Armazenamento e clique em Próximo.
- Para Atribuir acesso a, selecione Identidade Gerenciada.
- Clique em +Selecionar Membros e selecione o Conector de Acesso para Azure Databricks ou Identidade Gerenciada Atribuída pelo Usuário.
- Pesquise o nome do seu conector ou a identidade atribuída pelo usuário, selecione-os e clique em Revisar e Atribuir.
Etapa 3: Conceder acesso à identidade gerenciada a eventos de arquivo
A concessão de acesso de identidade gerenciada a eventos de arquivo permite que o Azure Databricks assine notificações de evento de arquivo emitidas por provedores de nuvem. Isso torna o processamento de arquivos mais eficiente. Para obter mais informações, consulte Configurar eventos de arquivo para um local externo.
Para conceder as permissões nesta etapa, você deve ter a função RBAC do Proprietário ou Administrador de Acesso do Usuário em sua conta de armazenamento.
- Faça logon em sua conta do Azure Data Lake Storage.
- Vá para Controle de Acesso (IAM), clique em + Adicionar e selecione Adicionar atribuição de função.
- Selecione a função Colaborador de Dados da Fila de Armazenamento e clique em Próximo.
- Para Atribuir acesso a, selecione Identidade Gerenciada.
- Clique em +Selecionar Membros e selecione o Conector de Acesso para Azure Databricks ou Identidade Gerenciada Atribuída pelo Usuário.
- Pesquise o nome do seu conector ou a identidade atribuída pelo usuário, selecione-os e clique em Revisar e Atribuir.
Etapa 4: conceder ao Azure Databricks permissão para configurar eventos de arquivos em seu nome
Note
Esta etapa é opcional, mas altamente recomendada. Se você não conceder acesso ao Azure Databricks para configurar eventos de arquivo em seu nome, deverá configurar eventos de arquivo manualmente para cada local e também terá acesso limitado a recursos críticos que o Databricks poderá liberar no futuro. Para obter mais informações sobre eventos de arquivo, consulte Configurar eventos de arquivo para um local externo.
Esta etapa permite que o Azure Databricks configure eventos de arquivo automaticamente. Para conceder as permissões nesta etapa, você deve ter as funções RBAC do Proprietário ou Administrador de Acesso do Usuário em sua identidade gerenciada e o grupo de recursos em que sua conta do Azure Data Lake Storage Gen2 está.
Siga as instruções na Etapa 3: Conceda acesso à identidade gerenciada a eventos de arquivo e atribua o Colaborador da Conta de Armazenamento à sua identidade gerenciada.
Essa função não substitui as funções concedidas nas etapas 2 ou 3 nesta página, mas está além delas.
Navegue até o grupo de recursos do Azure no qual sua conta do Azure Data Lake Storage está.
Vá para Controle de Acesso (IAM), clique em + Adicionar e selecione Adicionar atribuição de função.
Selecione a função Colaborador de EventGrid EventSubscription e clique em Avançar.
Para Atribuir acesso a, selecione Identidade Gerenciada.
Clique em +Selecionar Membros e selecione o Conector de Acesso para Azure Databricks ou Identidade Gerenciada Atribuída pelo Usuário.
Pesquise o nome do seu conector ou a identidade atribuída pelo usuário, selecione-os e clique em Revisar e Atribuir.
Etapa 5: Criar a credencial de armazenamento no Databricks
Agora que você criou um conector de acesso com uma identidade gerenciada e concedeu-lhe permissões à sua conta de armazenamento, você pode criar a credencial de armazenamento em Azure Databricks.
Faça login no espaço de trabalho do Azure Databricks com o Unity Catalog habilitado como um usuário com o privilégio
CREATE STORAGE CREDENTIALno metastore.Na barra lateral, clique no
Catálogo.
Clique em
e, em seguida, clique em Criar uma credencial.Selecione um tipo de credencial de identidade gerenciada do Azure.
Insira um nome de credencial de armazenamento e um comentário opcional.
Insira a ID do Conector de Acesso (a ID do recurso que você anotou na Etapa 1).
A ID do recurso está no formato:
/subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>(Opcional) Se você criou o conector de acesso usando uma identidade gerenciada atribuída pelo usuário, insira a ID de Identidade Gerenciada (a ID do recurso da identidade gerenciada).
(Opcional) Se você quiser que os usuários tenham acesso somente leitura aos locais externos que usam essa credencial de armazenamento, clique em Opções Avançadas e selecione Limite para uso somente leitura. Para obter mais informações, confira Marcar uma credencial de armazenamento como somente leitura.
Clique em Criar.
(Opcional) Associe as credenciais de armazenamento a workspaces específicos.
Por padrão, qualquer usuário privilegiado pode usar a credencial de armazenamento em qualquer workspace anexado ao metastore. Se você quiser permitir o acesso somente de workspaces específicos, acesse a guia Workspaces e atribua os workspaces. Consulte Atribuir uma credencial de armazenamento a espaços de trabalho específicos.
Agora você pode criar um local externo que referencie sua credencial de armazenamento.
Criar um local externo para um contêiner do ADLS Gen2
Esta seção descreve como criar um local externo usando o Gerenciador de Catálogos ou o SQL. Ele pressupõe que você já tenha uma credencial de armazenamento que permita o acesso ao contêiner do ADLS Gen2. Se você não tiver uma credencial de armazenamento, siga as etapas em Criar uma credencial de armazenamento que acesse o ADLS Gen2.
Opção 1: criar um local externo manualmente usando o Gerenciador de Catálogos
Você pode criar um local externo manualmente usando o Catalog Explorer.
Para criar a localização externa:
Faça logon em um espaço de trabalho que esteja anexado ao metastore.
Na barra lateral, clique no
Catálogo.
Clique em
e, em seguida, clique em Criar um local externo.Digite um Nome de localização externa.
Em Storage type, selecione Azure.
Na URL, insira o caminho de contêiner do ADLS Gen2. Por exemplo,
abfss://mycontainer@mystorageaccount.dfs.core.windows.net/<path>.Em Credencial de armazenamento, selecione a credencial de armazenamento que concede acesso ao local externo.
(Opcional) Se você quiser que os usuários tenham acesso somente leitura ao local externo, clique em Opções Avançadas e selecione Limite para uso somente leitura. Para obter mais informações, confira Marcar um local externo como somente leitura.
(Opcional) Se o local externo for destinado a um catálogo federado do metastore do Hive, clique em Opções avançadas e habilite o modo Fallback.
(Opcional) Para habilitar a capacidade de assinar notificações de alteração no local externo, clique em Opções Avançadas e selecione Habilitar eventos de arquivo.
Para obter detalhes, consulte Configurar eventos de arquivo para um local externo.
Clique em Criar.
(Opcional) Associar o local externo a espaços de trabalho específicos.
Por padrão, qualquer usuário privilegiado pode usar o local externo em qualquer workspace anexado ao metastore. Se você quiser permitir o acesso somente de workspaces específicos, acesse a guia Workspaces e atribua os workspaces. Consulte Atribuir uma localização externa a espaços de trabalho específicos.
Vá para a guia Permissões para conceder 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 gerenciado ao metastore, catálogo ou esquema, conceda o privilégio
CREATE MANAGED LOCATION. - Para criar tabelas ou volumes externos, conceda
CREATE EXTERNAL TABLEouCREATE EXTERNAL VOLUME.
Siga estas etapas:
- Selecione Conceder.
- Na caixa de diálogo Conceder em
<external location>, selecione usuários, grupos ou entidades de serviço no campo Entidade de segurança e selecione o privilégio que deseja conceder. - Selecione Conceder.
- Para usar o local externo para adicionar um local de armazenamento gerenciado ao metastore, catálogo ou esquema, conceda o privilégio
Opção 2: criar um local externo usando o SQL
Para criar um local externo usando o SQL, execute o seguinte comando em um notebook ou no editor de consultas SQL. Substitua os valores de espaço reservado. Para obter permissões e pré-requisitos necessários, consulte Requisitos.
-
<location-name>: um nome para o local externo. Selocation_nameincluir caracteres especiais, como hifens (-), ele deverá ser colocado entre crases (` `). Consulte Nomes. -
<container-path>: o caminho no locatário de nuvem ao qual esse local externo concede acesso. Por exemplo,abfss://mycontainer@mystorageaccount.dfs.core.windows.net/. -
<storage-credential-name>: o nome da credencial de armazenamento que autoriza a leitura e gravação no contêiner. Se o nome da credencial incluir caracteres especiais, como hifens (-), ele deverá ser colocado entre crases (` `).
CREATE EXTERNAL LOCATION [IF NOT EXISTS] `<location-name>`
URL '<container-path>'
WITH ([STORAGE] CREDENTIAL `<storage-credential-name>`)
[COMMENT '<comment-string>'];
Se você quiser restringir o acesso a locais externos a espaços de trabalho específicos em sua conta, também chamado de vinculação de espaço de trabalho ou isolamento de local externo, consulte Atribuir um local externo a espaços de trabalho específicos.
Verificar a conexão
Para verificar se você criou com êxito o local externo, tente ler um arquivo do local externo. Por exemplo, suponha que você tenha um local abfss://mycontainer@mystorageaccount.dfs.core.windows.net/ externo contendo um arquivo CSV chamado example.csv. Para ler o abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csv arquivo, siga estas etapas:
Na barra lateral, clique no
Workspace.
Clique em Criar e selecione Bloco de Anotações.
Execute o seguinte snippet de código Python:
display(dbutils.fs.ls('abfss://mycontainer@mystorageaccount.dfs.core.windows.net/'))Isso exibe uma lista de caminhos de arquivo no local externo. Neste exemplo, o
abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csvarquivo aparece na saída.Para ler um arquivo específico no local externo, execute o seguinte snippet de código Python:
spark.read.format("csv") \ .option("header", "true") \ .option("delimiter", ";") \ .load('abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csv') \ .display()Isso exibe os dados no
abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csvarquivo.
Próximas Etapas
- Conceda a outros usuários permissão para usar locais externos. Confira Gerenciar locais externos.
- Defina locais de armazenamento gerenciados usando locais externos. Consulte Especificar um local de armazenamento gerenciado no catálogo do Unity.
- Defina tabelas externas usando locais externos. Consulte Trabalhar com tabelas externas.
- Defina volumes externos usando locais externos. Confira O que são os volumes do Unity Catalog?.