Criar um local externo para conectar o armazenamento em nuvem à Databricks
Este artigo descreve como configurar um local externo em Unity Catalog para conectar o armazenamento em nuvem a Databricks.
Os locais externos associam as credenciais de armazenamento do Unity Catalog aos contêineres de armazenamento de objetos na nuvem. Os locais externos são usados para definir locais de armazenamento gerencial 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 Google Cloud Storage (GCS) ou do Cloudflare R2.
O senhor pode criar um local externo usando o Catalog Explorer, o comando Databricks CLI, ou SQL em um Notebook ou na consulta Databricks SQL.
Para obter mais informações sobre os usos de locais externos e a relação entre credenciais de armazenamento e locais externos, consulte gerenciar o acesso ao armazenamento em nuvem usando Unity Catalog.
Antes de começar
Pré-requisitos :
-
O senhor deve criar o bucket do Google Cloud Storage (GCS) ou do Cloudflare R2 que deseja usar como local externo antes de criar o objeto de local externo no Databricks.
-
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 e Criar uma credencial de armazenamento para se conectar ao Cloudflare R2.
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êmCREATE 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
Crie um local externo manualmente 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:
-
Faça login em um site workspace que esteja anexado ao metastore.
-
Na barra lateral, clique em
Catálogo .
-
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 ).
-
Insira um nome de localização externa .
-
Em URL , insira ou selecione o caminho para o local externo. Você tem três opções:
-
Para copiar o caminho do contêiner de um ponto de montagem DBFS existente, clique em Copy from DBFS (Copiar do DBFS ).
-
Para copiar o subcaminho para o local de armazenamento DBFS root, clique em Copy from DBFS e selecione Copy from DBFS root . Se o senhor for um administrador do workspace, o sistema também criará a credencial de armazenamento para o senhor.
-
Se não estiver copiando de um ponto de montagem existente ou de DBFS root, use o campo URL para inserir o caminho do bucket GCS ou R2 que deseja usar como local externo.
Por exemplo,
gs://mybucket/<path>
our2://mybucket@my-account-id.r2.cloudflarestorage.com/<path>
. -
-
Selecione a credencial de armazenamento que concede acesso ao local externo.
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:
-
Na lista suspensa Credencial de armazenamento , selecione + Criar nova credencial de armazenamento.
-
Na lista suspensa Credential type (Tipo de credencial ), selecione o tipo de credencial que o senhor deseja usar no objeto de credencial de armazenamento: GCP serviço account (conta de serviço) ou Cloudflare API tokens (tokens).
-
Um serviço GCP account é criado automaticamente para o senhor quando salva o local externo. Para Cloudflare API tokens, insira o Cloudflare account, acesse key ID e acesso secreto key.
Para obter mais informações, consulte Criar uma credencial de armazenamento para se conectar a Google Cloud Storage ou Criar uma credencial de armazenamento para se conectar ao Cloudflare R2.
-
(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.
-
(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 .
-
Clique em Criar .
-
(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.
-
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
ouCREATE EXTERNAL VOLUME
.
- Clique em Conceder .
- 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. - Clique em Conceder .
-
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. Selocation_name
incluir caracteres especiais, como hífens (-
), ele deverá estar entre acentos invertidos ( -
<bucket-path>
: O caminho em sua nuvem tenant ao qual esse local externo concede acesso. Por exemplo,gs://mybucket
our2://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 (
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.
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 amyWorkspace
? - O catálogo
myCat
está vinculado amyWorkspace
com o nível de acessoRead & 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.
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.
- Catalog Explorer
- CLI
-
Log in to a workspace that is linked to the metastore.
-
In the sidebar, click
Catalog.
-
On the Quick access page, click the External data > button to go to the External Locations tab.
-
Select the external location and go to the Workspaces tab.
-
On the Workspaces tab, clear the All workspaces have access checkbox.
If your external location is already bound to one or more workspaces, this checkbox is already cleared.
-
Click Assign to workspaces and enter or find the workspaces you want to assign.
To revoke access, go to the Workspaces tab, select the workspace, and click Revoke. To allow access from all workspaces, select the All workspaces have access checkbox.
There are two Databricks CLI command groups and two steps required to assign an external location to a workspace.
In the following examples, replace <profile-name>
with the name of your Databricks authentication configuration profile. It should include the value of a personal access token, in addition to the workspace instance name and workspace ID of the workspace where you generated the personal access token. See Databricks personal access token authentication.
-
Use the
external-locations
command group’supdate
command to set the external location’sisolation mode
toISOLATED
:Bashdatabricks external-locations update <my-location> \
--isolation-mode ISOLATED \
--profile <profile-name>The default
isolation-mode
isOPEN
to all workspaces attached to the metastore. -
Use the
workspace-bindings
command group’supdate-bindings
command to assign the workspaces to the external location:Bashdatabricks workspace-bindings update-bindings external-location <my-location> \
--json '{
"add": [{"workspace_id": <workspace-id>}...],
"remove": [{"workspace_id": <workspace-id>}...]
}' --profile <profile-name>Use the
"add"
and"remove"
properties to add or remove workspace bindings.
Read-only binding (BINDING_TYPE_READ_ONLY
) is not available for external locations. Therefore there is no reason to set binding_type
for the external locations binding.
To list all workspace assignments for an external location, use the workspace-bindings
command group’s get-bindings
command:
databricks workspace-bindings get-bindings external-location <my-location> \
--profile <profile-name>
See also Workspace Bindings in the REST API reference.
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
- Conceda permissão a outros usuários para usar locais externos. Consulte gerenciar locais externos.
- Definir locais de armazenamento gerenciáveis usando locais externos. Consulte Especificar um local de armazenamento gerenciar em Unity Catalog.
- Defina tabelas externas usando locais externos. Consulte Trabalhar com tabelas externas.
- Defina volumes externos usando locais externos. Consulte O que são volumes do Unity Catalog?