gerenciar locais externos
Este artigo descreve como listar, view, atualizar, conceder permissões, ativar eventos de arquivos e excluir locais externos.
A Databricks recomenda controlar o acesso aos arquivos usando volumes. Consulte O que são volumes do Unity Catalog?
Descreva um local externo
Para ver as propriedades de um local externo, inclusive as permissões e o acesso workspace, o senhor pode usar o Catalog Explorer ou um comando SQL.
- Catalog Explorer
- SQL
- Na barra lateral, clique em
Catálogo .
- Na página de acesso rápido , clique no botão External data > para acessar o site External Locations tab.
- Clique no nome de um local externo para acessar view suas propriedades.
Execute o seguinte comando em um Notebook ou no editor Databricks SQL. Substitua <location-name>
pelo nome do local externo.
DESCRIBE EXTERNAL LOCATION <location-name>;
Mostrar subsídios em um local externo
Para mostrar as concessões em um local externo, use um comando como o seguinte. Opcionalmente, você pode filtrar os resultados para mostrar somente as concessões para o principal especificado.
SHOW GRANTS [<principal>] ON EXTERNAL LOCATION <location-name>;
Substitua os valores temporários:
<location-name>
: O nome do local externo que autoriza a leitura e a gravação no bucket em sua nuvem tenant.<principal>
: O endereço email de um usuário de nível accountou o nome de um grupo de nível account.
Se um grupo ou nome de usuário contiver um espaço ou símbolo @
, use acentos (
) ao redor dele, não apóstrofos.
Conceder permissões em um local externo
Esta seção descreve como conceder e revogar permissões em um local externo usando o Catalog Explorer e SQL comando em uma consulta do Notebook ou SQL. Para obter informações sobre como usar o Databricks CLI ou Terraform, consulte a documentaçãoDatabricks Terraform e What is the Databricks CLI?
Você pode conceder as seguintes permissões em um local externo:
CREATE EXTERNAL TABLE
CREATE EXTERNAL VOLUME
CREATE MANAGED STORAGE
Permissões necessárias : o privilégio CREATE EXTERNAL LOCATION
na metastore e na credencial de armazenamento referenciada no local externo ou o privilégio MANAGE
no local externo. Os administradores do metastore têm CREATE EXTERNAL LOCATION
no metastore em default.
Para conceder permissão para usar um local externo:
- Catalog Explorer
- SQL
- Na barra lateral, clique em
Catálogo .
- Na página de acesso rápido , clique no botão External data > para acessar o site External Locations tab.
- Clique no nome de um local externo para abrir suas propriedades.
- Clique em Permissões .
- Para conceder permissão a usuários ou grupos, selecione cada identidade e clique em Conceder .
- Para revogar permissões de usuários ou grupos, selecione cada identidade e clique em Revogar .
Execute o seguinte comando SQL em um editor de consultas do Notebook ou SQL. Esse exemplo concede a capacidade de criar uma tabela externa que faça referência ao local externo:
GRANT CREATE EXTERNAL TABLE ON EXTERNAL LOCATION <location-name> TO <principal>;
Substitua os valores temporários:
<location-name>
: O nome do local externo que autoriza a leitura e a gravação no bucket em sua nuvem tenant.<principal>
: O endereço email de um usuário de nível accountou o nome de um grupo de nível account.
Se um grupo ou nome de usuário contiver um espaço ou símbolo @
, use marcações invertidas ao redor dele (não apóstrofos). Por exemplo, equipe financeira .
Alterar o proprietário de um local externo
O criador de um local externo é seu proprietário inicial. Para alterar o proprietário para um usuário ou grupo de nível accountdiferente, execute o seguinte comando em um Notebook ou no editor Databricks SQL ou use o Catalog Explorer.
Permissões necessárias : proprietário do local externo ou usuário com o privilégio MANAGE
.
Substitua os valores temporários:
<location-name>
: nome da credencial.<principal>
: O endereço email de um usuário de nível accountou o nome de um grupo de nível account.
ALTER EXTERNAL LOCATION <location-name> OWNER TO <principal>
Marcar um local externo como somente para leitura
Se quiser que os usuários tenham acesso somente para leitura a um local externo, você pode usar o Catalog Explorer para marcar o local externo como somente para leitura.
Tornando locais externos somente para leitura:
- Impede que os usuários gravem em arquivos nesses locais externos, independentemente de quaisquer permissões de gravação concedidas pelo serviço account subjacente à credencial de armazenamento e independentemente das permissões Unity Catalog concedidas nesse local externo.
- Impede que os usuários criem tabelas ou volumes gerenciáveis nesses locais externos.
- Permite que o sistema valide adequadamente a localização externa no momento da criação.
Você pode marcar locais externos como somente para leitura ao criá-los.
Você também pode usar o Catalog Explorer para alterar o status somente para leitura após criar um local externo:
- Na barra lateral, clique em
Catálogo .
- Na página de acesso rápido , clique no botão External data > para acessar o site External Locations tab.
- Selecione o local externo, clique no
menu ao lado do botão Testar conexão e selecione Editar .
- Na caixa de diálogo de edição, clique em Opções avançadas e selecione a opção Limitar para uso somente para leitura .
- Clique em Atualizar .
Configurar um algoritmo de criptografia em um local externo (somente AWS S3)
AWS Oferece suporte à criptografia no lado do servidor (SSE) com Amazon S3 gerenciar chave (SSE-S3) ou AWS KMS chave (SSE-KMS) para proteger os dados em S3. Se o seu bucket S3 exigir criptografia SSE, o senhor poderá configurar um algoritmo de criptografia no local externo para permitir que tabelas e volumes externos no Unity Catalog acessem os dados no seu bucket S3. O SSE não é compatível com tabelas externas compartilhadas usando o Delta Sharing. Para obter mais informações, consulte Configurar criptografia para S3 com KMS.
-
Na barra lateral, clique em
Catálogo .
-
Na parte superior do painel Catálogo , clique no ícone de
engrenagem e selecione Locais externos .
-
Selecione o local externo. O local externo deve usar um IAM role para uma credencial de armazenamento.
-
Clique no
menu kebab ao lado do botão Testar conexão e selecione Editar.
-
Na caixa de diálogo de edição, clique em Opções avançadas .
-
Em Encryption Algorithm (Algoritmo de criptografia ), selecione SSE-SE ou SSE-KMS , dependendo de sua criptografia key.
Para SSE-KMS , em Encryption KMS key , cole o ARN do KMS key referenciado pelos clientes ao acessar o local S3.
-
Clique em Atualizar .
(Recomendado) Habilitar eventos de arquivo para um local externo
Visualização
Esse recurso está em Public Preview.
Se você quiser ingerir notificações de alteração enviadas pelo provedor de nuvem, habilitar eventos de arquivo para o local externo tem as seguintes vantagens:
- Facilita a configuração de notificações de arquivos para o Auto Loader. Especificamente, ele permite a descoberta de arquivos incrementais com desempenho semelhante à notificação no Auto Loader, definindo
cloudFiles.useManagedFileEvents
comotrue
. Consulte Configurar a transmissão Auto Loader no modo de notificação de arquivo. - Melhora a eficiência e a capacidade dos acionadores de chegada de arquivos para o trabalho. Consulte Trigger Job quando novos arquivos chegarem.
Antes de começar
Se o senhor quiser que o Databricks configure a inscrição Pub/Sub ou as filas SQS em seu nome, o local externo deverá fazer referência a uma credencial de armazenamento que forneça as permissões adequadas para isso. Consulte a próxima etapa para obter instruções.
Se o senhor quiser criar sua própria inscrição Pub/Sub, a identidade representada pela credencial de armazenamento deverá ter a seguinte permissão nessas inscrições Pub/Sub:
pubsub.subscriptions.consume
Se você quiser criar suas próprias filas SQS, a identidade representada pela credencial de armazenamento deve ter as seguintes permissões nessas filas SQS:
sqs:ReceiveMessage
sqs:DeleteMessage
sqs:PurgeQueue
Etapa 1: Confirme se o Databricks tem acesso aos eventos de arquivo no GCS ou no AWS S3
Antes de ativar os eventos de arquivo para o objeto securizável de local externo, o senhor deve garantir que o seu GCS ou AWS S3 account esteja configurado para dar a Databricks acesso aos eventos de arquivo que ele emite. Se quiser que o Databricks configure eventos de arquivo no GCS ou no AWS S3 para o senhor, também é necessário garantir que o Databricks tenha o acesso adequado.
Atribuir esse acesso é uma etapa recomendada quando você configura as credenciais de armazenamento.
Para baldes GCS
Para verificar se o Databricks pode configurar e assinar as notificações de eventos do seu bucket:
-
Obtenha o endereço do serviço account email .
-
Na barra lateral, clique em
Catálogo .
-
Na página de acesso rápido , clique no botão External data > para acessar o site External Locations tab.
-
Selecione o local externo.
-
Na Visão geral tab, clique no nome da credencial .
-
Na credencial de armazenamento tabOverview, copie o account endereço de e-mail do serviço.
Você usará isso na próxima etapa.
-
-
Faça login em seu site GCP account.
-
Acesse IAM & Admin > Roles (Funções ).
-
Localize o serviço account cujo endereço email o senhor copiou na etapa 1.
-
Confirme se foi atribuída uma função personalizada que inclui as seguintes configurações:
pubsub.subscriptions.consume
pubsub.subscriptions.create
pubsub.subscriptions.delete
pubsub.subscriptions.get
pubsub.subscriptions.list
pubsub.subscriptions.update
pubsub.topics.attachSubscription
pubsub.topics.create
pubsub.topics.delete
pubsub.topics.get
pubsub.topics.list
pubsub.topics.update
storage.buckets.update -
Se o serviço account não tiver uma função com essas configurações, crie uma função personalizada que tenha e atribua-a ao serviço account. Para obter instruções, consulte (Recomendado) Configurar permissões para eventos de arquivo.
Para buckets S3
Para verificar se o Databricks pode configurar e assinar as notificações de eventos do seu bucket:
-
Obtenha o site IAM role.
-
Na barra lateral, clique em
Catálogo .
-
Na página de acesso rápido , clique no botão External data > para acessar o site External Locations tab.
-
Selecione o local externo.
-
Na Visão geral tab, clique no nome da credencial .
-
Na credencial de armazenamento Overview tab, copie o IAM role (ARN ).
Você usará isso na próxima etapa.
-
-
Faça login em seu site AWS account.
-
Vá para o IAM e procure a função que o senhor copiou na etapa 1.
-
Em Permissions policies (Políticas de permissões ), localize a política IAM ou as políticas associadas ao IAM role e abra-a.
-
Abra a política ou políticas e confirme se há uma que inclua as seguintes propriedades.
Essa política permite que o site Databricks account atualize a configuração de notificação de eventos do seu bucket, crie um tópico de SNS, crie uma fila de SQS e assine a fila de SQS no tópico de SNS.
Substitua
<BUCKET>
pelo nome do seu bucket S3.JSON{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ManagedFileEventsSetupStatement",
"Effect": "Allow",
"Action": [
"s3:GetBucketNotification",
"s3:PutBucketNotification",
"sns:ListSubscriptionsByTopic",
"sns:GetTopicAttributes",
"sns:SetTopicAttributes",
"sns:CreateTopic",
"sns:TagResource",
"sns:Publish",
"sns:Subscribe",
"sqs:CreateQueue",
"sqs:DeleteMessage",
"sqs:ReceiveMessage",
"sqs:SendMessage",
"sqs:GetQueueUrl",
"sqs:GetQueueAttributes",
"sqs:SetQueueAttributes",
"sqs:TagQueue",
"sqs:ChangeMessageVisibility",
"sqs:PurgeQueue"
],
"Resource": ["arn:aws:s3:::<BUCKET>", "arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"]
},
{
"Sid": "ManagedFileEventsListStatement",
"Effect": "Allow",
"Action": ["sqs:ListQueues", "sqs:ListQueueTags", "sns:ListTopics"],
"Resource": ["arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"]
},
{
"Sid": "ManagedFileEventsTeardownStatement",
"Effect": "Allow",
"Action": ["sns:Unsubscribe", "sns:DeleteTopic", "sqs:DeleteQueue"],
"Resource": ["arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"]
}
]
}Consulte também a Etapa 1: Criar um IAM role.
-
Se essa política estiver faltando, adicione-a ao site IAM role.
Etapa 2: Habilitar eventos de arquivo para o local externo usando o Catalog Explorer
Para ativar eventos de arquivo:
-
Na barra lateral, clique em
Catálogo .
-
Na página de acesso rápido , clique no botão External data > para acessar o site External Locations tab.
-
Selecione o local externo.
-
Clique no
menu kebab ao lado do botão Testar conexão e selecione Editar.
-
Na caixa de diálogo de edição, clique em Opções avançadas .
-
Selecione Habilitar eventos de arquivo .
-
Selecione o tipo de evento Arquivo :
Automático : (Recomendado) selecione esta opção se quiser que o Databricks configure a inscrição e os eventos para o senhor.
Fornecido: Selecione essa opção se o senhor já tiver configurado uma fila do Google Cloud Pub/Sub inscrição ou SQS.
-
Se o senhor selecionou o tipo de evento Arquivo fornecido , digite o nome da inscrição Pub/Sub existente ou o URL da fila de armazenamento.
-
Inscrição Pub/Sub:
projects/<project-id>/subscriptions/<subscription-name>
-
Fila do AWS SQS:
https://sqs.<region>.amazonaws.com/<account-ID>/<queue-name>
-
-
Clique em Atualizar .
-
Aguarde alguns segundos e clique em Testar conexão na página principal de edição de localização externa para confirmar se os eventos do arquivo foram habilitados com êxito.
Limitações de eventos de arquivo
Os eventos de arquivo em locais externos têm as seguintes limitações:
-
A taxa de transferência de eventos é limitada a 2000 arquivos ingeridos por segundo.
-
O senhor não pode marcar recurso de nuvem usando a opção
resourceTags
. Em vez disso, marque o recurso usando o console na nuvem depois que o serviço Auto Loader criar a fila e o recurso de inscrição. -
O senhor não pode configurar eventos de arquivo para o local de armazenamento raiz do metastore do Unity Catalog se nenhum local externo estiver definido para esse local de armazenamento.
O senhor não pode configurar eventos de arquivo em locais de armazenamento que não tenham um objeto de local externo definido no Unity Catalog. Algumas implementações do Unity Catalog incluem um local de armazenamento raiz do metastore que não está associado a um local externo. Para determinar se esse é o caso do local de armazenamento raiz do seu metastore:
-
Como administrador da conta, faça login no console da conta.
-
Clique em
Catálogo .
-
Clique no nome da metastore.
-
Acesse Configuration tab.
-
Se houver um valor de caminho de bucket do GCS , então a raiz do metastore não tem um objeto de localização externa definido para ele.
Para atualizar o armazenamento raiz do metastore para usar um local externo, clique no botão Remover . Um local externo será criado para você. Para obter detalhes, consulte Remover armazenamento em nível de metástore.
-
Modificar um local externo
O proprietário de um local externo ou um usuário com o privilégio MANAGE
pode renomear, alterar o URI e alterar a credencial de armazenamento do local externo.
Para renomear um local externo, faça o seguinte:
Execute o seguinte comando em um notebook ou no editor Databricks SQL. Substitua os valores temporários:
<location-name>
: O nome do local.<new-location-name>
: Um novo nome para o local.
ALTER EXTERNAL LOCATION <location-name> RENAME TO <new-location-name>;
Para alterar o URI para o qual um local externo aponta em seu locatário de nuvem, faça o seguinte:
Execute o seguinte comando em um notebook ou no editor Databricks SQL. Substitua os valores temporários:
<location-name>
: O nome do local externo.<url>
: o novo URL de armazenamento ao qual o local deve autorizar o acesso em seu locatário de nuvem.
ALTER EXTERNAL LOCATION location_name SET URL '<url>' [FORCE];
A opção FORCE
altera o URL mesmo se as tabelas externas dependerem do local externo.
Para alterar a credencial de armazenamento usada por um local externo, faça o seguinte:
Execute o seguinte comando em um notebook ou no editor Databricks SQL. Substitua os valores temporários:
<location-name>
: O nome do local externo.<credential-name>
: O nome da credencial de armazenamento que concede acesso à URL do local em sua nuvem tenant.
ALTER EXTERNAL LOCATION <location-name> SET STORAGE CREDENTIAL <credential-name>;
Excluir um local externo
Para excluir (descartar) um local externo, você deve ser seu proprietário ou ter o privilégio MANAGE
no local externo. Para excluir um local externo, faça o seguinte:
Execute o seguinte comando em um Notebook ou no editor Databricks SQL. Os itens entre colchetes são opcionais. Substitua <location-name>
pelo nome do local externo.
DROP EXTERNAL LOCATION [IF EXISTS] <location-name>;