Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Esta página descreve como se ligar a uma localização externa do Azure Data Lake Storage Gen2 (ADLS Gen2). Após completar esta ligação, pode controlar o acesso a estes objetos ADLS Gen2 usando o Unity Catalog.
Para te ligares a um caminho de contentor ADLS Gen2, precisas de dois objetos seguráveis no Unity Catalog. A primeira é uma credencial storage, que especifica uma identidade gerida Azure que permite o acesso ao contentor ADLS Gen2. Precisa desta credencial de armazenamento para o segundo objeto necessário: uma localização externa, que define o caminho para a sua localização de armazenamento ADLS Gen2 e as credenciais necessárias para aceder a essa localização.
Requirements
In Azure Databricks:
- Espaço de trabalho do Azure Databricks ativado para o Unity Catalog.
-
CREATE STORAGE CREDENTIALprivilégio no metastore do Unity Catalog associado ao espaço de trabalho. Os administradores de conta e os administradores de metastore têm esse privilégio por padrão. -
CREATE EXTERNAL LOCATIONprivilégio tanto no metastore do Unity Catalog como na credencial de armazenamento referenciada pela localização externa. Os administradores da Metastore e dos espaços de trabalho têm este privilégio por defeito.
Na sua conta Azure:
Uma conta e contentor de armazenamento ADLS Gen2. Para evitar cobranças de saída, isso deve estar na mesma região do espaço de trabalho a partir do qual você deseja acessar os dados.
Os caminhos de localização externa devem conter apenas caracteres ASCII padrão (letras
A–Za–z,0–9, dígitos e símbolos comuns como/,_,-).As contas de armazenamento do Azure Data Lake Storage que usas como locais externos devem ter um namespace hierárquico.
Não é possível usar contêineres de armazenamento do Azure com políticas de imutabilidade (WORM - Write Once, Read Many) habilitadas como locais externos. O Unity Catalog 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 na sua subscrição Azure. Para isso, tens de ser
ContributorouOwnerde um grupo de recursos Azure.Permissão para modificar a política de acesso da conta de armazenamento. Para isso, deve ser o proprietário ou utilizador com a função
User Access AdministratorAzure RBAC na sua conta de armazenamento.
Crie uma credencial de armazenamento que aceda à ADLS Gen2
Para criar uma credencial de armazenamento para acesso a um contentor ADLS Gen2, primeiro cria um conector de acesso para Azure Databricks com uma identidade gerida, depois concede à identidade gerida acesso à sua conta de armazenamento.
Etapa 1: Criar um conector de acesso para o Azure Databricks
Um conector de acesso para Azure Databricks é um recurso Azure de primeira parte que permite ligar identidades geridas a uma conta Azure Databricks. Cada conector de acesso para Azure Databricks pode incluir uma identidade gerida atribuída pelo sistema, uma ou mais identidades geridas atribuídas pelo utilizador, ou ambas.
Faça logon no Portal do Azure como Colaborador ou Proprietário de um grupo de recursos.
Clique + Criar ou criar um recurso.
Procura por Access Connector para Azure Databricks e seleciona-o.
Clique em Criar.
Na guia Noções básicas, aceite, selecione ou insira valores para os seguintes campos:
- Subscrição: Esta é a subscrição do Azure onde o conector de acesso será criado. O padrão é a assinatura do Azure que você está usando no momento. Pode ser qualquer subscrição no locatário.
- Grupo de recursos: este é o grupo de recursos do Azure no qual o conector de acesso será criado.
- Nome: insira um nome que indique a finalidade do conector.
- Região: deve ser a mesma região da conta de armazenamento à qual você se conectará.
Clique em Avançar, insira tags e clique em Avançar.
Na guia Identidade Gerenciada, crie as identidades gerenciadas da seguinte maneira:
- Para usar uma identidade gerida atribuída pelo sistema, defina o Estado para Ligado.
- 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 Rever e Criar.
Revise as suas definições de configuração e depois clique em Criar.
Após a conclusão da implementação, clique em Ir para recurso.
Anote a ID do recurso.
O ID do recurso está no formato:
/subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
Etapa 2: Conceder acesso à identidade gerenciada à conta de armazenamento
Para conceder as permissões nesta etapa, deve ter a função Owner ou User Access Administrator Azure RBAC na sua conta de armazenamento.
Você tem as seguintes opções ao conceder à identidade gerenciada acesso à 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
Storage Blob Delegatorfunção e acesso de leitura e gravação a um contêiner específico usando aStorage Blob Data Contributorfunção.
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:
- Inicie sessão na sua conta Azure Data Lake Storage.
- Vá a Controlo de Acesso (IAM), clique em + Adicionar e selecione Adicionar atribuição de funções.
- Selecione a função Colaborador de Dados de Blob de Armazenamento e clique em Avançar.
- Em Atribuir acesso a, selecione Identidade gerenciada.
- Clique em +Selecionar Membros e selecione o Conector de Acesso para Azure Databricks ou a Identidade Gerenciada Atribuída pelo Utilizador.
- Procure o nome do conector ou a identidade atribuída pelo usuário, selecione-o e clique em Revisar e Atribuir.
Passo 3: Conceder à identidade gerida acesso a eventos de ficheiros
Conceder à sua identidade gerenciada acesso a eventos de arquivo permite que o Azure Databricks assine notificações de eventos de arquivo emitidas por provedores de nuvem. Isso torna o processamento de arquivos mais eficiente. Para mais informações, consulte Configurar eventos de ficheiro para uma localização externa.
Para conceder as permissões nesta etapa, deve ter a função RBAC do Azure de Dono ou Administrador de Acesso de Utilizador na sua conta de armazenamento.
- Inicie sessão na sua conta Azure Data Lake Storage.
- Vá a Controlo de Acesso (IAM), clique em + Adicionar e selecione Adicionar atribuição de funções.
- Selecione a função Colaborador de Dados da Fila de Armazenamento e clique em Avançar.
- Em Atribuir acesso a, selecione Identidade gerenciada.
- Clique em +Selecionar Membros e selecione o Conector de Acesso para Azure Databricks ou a Identidade Gerenciada Atribuída pelo Utilizador.
- Procure o nome do conector ou a identidade atribuída pelo usuário, selecione-o e clique em Revisar e Atribuir.
Passo 4: Conceda acesso Azure Databricks para configurar eventos de ficheiros 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á lançar no futuro. Para mais informações sobre eventos de ficheiro, consulte Configurar eventos de ficheiro para uma localização externa.
Esta etapa permite que o Azure Databricks configure eventos de arquivo automaticamente. Para conceder as permissões nesta etapa, deve ter as funções de Proprietário ou Administrador de Acesso de Usuário do Azure RBAC na sua identidade gerida e no grupo de recursos em que está a sua conta do Armazenamento do Azure Data Lake.
Siga as instruções do Passo 3: Conceda à identidade gerida acesso a eventos de ficheiros e atribua o Contribuidor de Conta de Armazenamento à sua identidade gerida.
Essa função não substitui as funções concedidas nas etapas 2 ou 3 desta página, mas é adicional a elas.
Navegue até o grupo de recursos do Azure no qual sua conta do Armazenamento do Azure Data Lake está.
Vá a Controlo de Acesso (IAM), clique em + Adicionar e selecione Adicionar atribuição de funções.
Selecione a função EventGrid EventSubscription Contributor e clique em Next.
Em Atribuir acesso a, selecione Identidade gerenciada.
Clique em +Selecionar Membros e selecione o Conector de Acesso para Azure Databricks ou a Identidade Gerenciada Atribuída pelo Utilizador.
Procure o nome do conector ou a identidade atribuída pelo usuário, selecione-o e clique em Revisar e Atribuir.
Passo 5: Criar a credencial de armazenamento no Databricks
Agora que criou um conector de acesso com uma identidade gerida e lhe concedeu permissões para a sua conta de armazenamento, pode criar a credencial de armazenamento no Azure Databricks.
Inicie sessão no seu espaço de trabalho do Azure Databricks com o Unity Catalog ativado como um utilizador com o privilégio
CREATE STORAGE CREDENTIALna metastore.Na barra lateral, clique no
Catálogo.
Clique no
e, em seguida, clique em Criar uma credencial.Selecione um tipo de credencial do Azure Managed Identity.
Introduza o nome da credencial de Armazenamento e um comentário opcional.
Introduza o ID do Conector de Acesso (o ID de recurso que referiu no Passo 1).
O ID do recurso está no formato:
/subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>(Opcional) Se criou o conector de acesso usando uma identidade gerida atribuída pelo utilizador, introduza o ID de Identidade Gerida (o ID de recurso da identidade gerida).
(Opcional) Se quiser que os utilizadores tenham acesso apenas de leitura às localizações externas que utilizam esta credencial de armazenamento, clique em Opções Avançadas e selecione Limitar para uso só de leitura. Para obter mais informações, consulte Marcar uma credencial de armazenamento como somente de leitura.
Clique em Criar.
(Opcional) Associe a credencial de armazenamento a espaços de trabalho específicos.
Por padrão, qualquer usuário privilegiado pode usar a credencial de armazenamento em qualquer espaço de trabalho anexado ao metastore. Se quiser permitir o acesso apenas a partir de espaços de trabalho específicos, aceda ao separador
Espaços de Trabalho e atribua espaços de trabalho. Veja Atribuir uma credencial de armazenamento a espaços de trabalho específicos.
Agora pode criar uma localização externa que faça referência à sua credencial de armazenamento.
Crie uma localização externa para um contentor ADLS Gen2
Esta secção descreve como criar uma localização externa usando o Explorador de Catálogos ou SQL. Assume que já tens uma credencial de armazenamento que permite aceder ao teu contentor ADLS Gen2. Se não tiver uma credencial de armazenamento, siga os passos em Criar uma credencial de armazenamento que aceda à ADLS Gen2.
Opção 1: Criar uma localização externa manualmente usando o Explorador de Catálogos
Você pode criar um local externo manualmente usando o Catalog Explorer.
Para criar o local externo:
Faça login em um espaço de trabalho anexado ao metastore.
Na barra lateral, clique no
Catálogo.
Clique em
, depois, clique em Criar uma localização externa.Insira um nome de local externo.
Em Tipo de armazenamento, selecione Azure.
Em URL, introduza o caminho do contentor ADLS Gen2. Por exemplo,
abfss://mycontainer@mystorageaccount.dfs.core.windows.net/<path>.Em credencial de armazenamento, selecione a credencial de armazenamento que concede acesso à localização externa.
(Opcional) Se quiser que os utilizadores tenham acesso apenas de leitura à localização externa, clique em Opções Avançadas e selecione Limitar para uso só de leitura. Para obter mais informações, consulte Marcar um local externo como leitura somente.
(Opcional) Se o local externo for destinado a um catálogo federado de metastore do Hive, clique em Opções avançadas e habilite modo de fallback.
(Opcional) Para habilitar a capacidade de se inscrever para alterar notificações no local externo, clique em Opções Avançadas e selecione Habilitar eventos de arquivo.
Para mais detalhes, consulte Configurar eventos de ficheiro para uma localização externa.
Clique em Criar.
(Opcional) Vincule o local externo a espaços de trabalho específicos.
Por padrão, qualquer usuário privilegiado pode usar o local externo em qualquer espaço de trabalho anexado ao metastore. Se quiser permitir o acesso apenas a partir de espaços de trabalho específicos, aceda ao separador
Espaços de Trabalho e atribua espaços de trabalho. Veja Atribuir uma localização externa a espaços de trabalho específicos. Vá para o separador 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
CREATE MANAGED LOCATIONprivilégio. - Para criar tabelas ou volumes externos, conceda
CREATE EXTERNAL TABLEouCREATE EXTERNAL VOLUME.
Siga estes passos:
- Clique em Conceder.
- No diálogo Conceder em
<external location>, selecione utilizadores, grupos ou entidades de serviço no campo Entidades e selecione o privilégio que deseja conceder. - Clique em Conceder.
- Para usar o local externo para adicionar um local de armazenamento gerenciado ao metastore, catálogo ou esquema, conceda o
Opção 2: Criar um local externo usando SQL
Para criar um local externo usando SQL, execute o seguinte comando em um bloco de anotações ou no editor de consultas SQL. Substitua os valores substitutos. Para permissões e pré-requisitos necessários, consulte Requisitos.
-
<location-name>: Uma designação para o local externo. Casolocation_nameinclua caracteres especiais, como hífenes (-), estes devem ser envoltos por backticks (` `). Consulte Nomes. -
<container-path>: O caminho em seu 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 escrita no contentor. Se o nome da credencial de armazenamento incluir caracteres especiais, como hífenes (-), deverá ser delimitado por backticks (` `).
CREATE EXTERNAL LOCATION [IF NOT EXISTS] `<location-name>`
URL '<container-path>'
WITH ([STORAGE] CREDENTIAL `<storage-credential-name>`)
[COMMENT '<comment-string>'];
Se quiser limitar o acesso a localizações externas a espaços de trabalho específicos na sua conta, também conhecido como ligação de espaços de trabalho ou isolamento de localização externa, consulte Atribuir uma localização externa a espaços de trabalho específicos.
Verifique a ligação
Para verificar se criou com sucesso a localização externa, tente ler um ficheiro a partir da localização externa. Por exemplo, suponha que tem uma localização abfss://mycontainer@mystorageaccount.dfs.core.windows.net/ externa contendo um ficheiro CSV chamado example.csv. Para ler do abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csv ficheiro, siga estes passos:
Na barra lateral, clique em
Espaço de trabalho.
Clique em Criar, depois selecione Notebook.
Execute o seguinte excerto de código em Python:
display(dbutils.fs.ls('abfss://mycontainer@mystorageaccount.dfs.core.windows.net/'))Isto apresenta uma lista de caminhos de ficheiro na localização externa. Neste exemplo, o ficheiro
abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csvaparece na saída.Para ler um ficheiro específico na localização externa, execute o seguinte excerto de código Python:
spark.read.format("csv") \ .option("header", "true") \ .option("delimiter", ";") \ .load('abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csv') \ .display()Isto mostra os dados no
abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csvficheiro.
Passos seguintes
- Conceda permissão a outros usuários para usar locais externos. Consulte Gerenciar locais externos.
- Defina locais de armazenamento gerenciados usando locais externos. Consulte Especificar um local de armazenamento gerenciado no Catálogo Unity.
- Defina tabelas externas usando locais externos. Consulte Trabalhar com tabelas externas.
- Defina volumes externos usando locais externos. Consulte Quais são os volumes do Catálogo Unity?.