Habilitar a federação de metastore do Hive para um espaço de trabalho herdado Metastore do Hive
Importante
Este recurso está no Public Preview.
Este artigo mostra como federar seu metastore herdado do Azure Databricks Hive para que sua organização possa trabalhar com suas tabelas de metastore do Hive usando o Catálogo Unity.
Para obter uma visão geral da federação de metastore do Hive, consulte federação de metastore do Hive: habilitar o Unity Catalog para governar tabelas registradas em um metastore do Hive.
Antes de começar
Analise a lista de serviços e recursos suportados pela federação de metastore do Hive: Requisitos, recursos suportados e limitações.
Os requisitos específicos estão listados para cada etapa abaixo.
Etapa 1: Conectar o Unity Catalog ao seu metastore do Hive
Nesta etapa, você cria uma conexão , um objeto protegível do Unity Catalog que especifica um caminho e credenciais para acessar um sistema de banco de dados, neste caso, o metastore herdado do Hive do espaço de trabalho do Azure Databricks.
Requerimentos
- O privilégio
CREATE CONNECTION
no metastore do Unity Catalog.
Criar a conexão
Uma conexão especifica um caminho e credenciais para acessar um sistema de banco de dados externo. Para criar uma conexão, você pode usar o Gerenciador de Catálogos ou o comando CREATE CONNECTION
SQL em um bloco de anotações do Azure Databricks ou no editor de consultas Databricks SQL.
Observação
Você também pode usar a API REST do Databricks ou a CLI do Databricks para criar uma conexão. Consulte POST /api/2.1/unity-catalog/connections e comandos do Unity Catalog.
Permissões necessárias: administrador ou utilizador da Metastore com o privilégio CREATE CONNECTION
.
Explorador de Catálogos
- No seu espaço de trabalho do Azure Databricks, clique no Catálogo.
- Na página Acesso rápido, clique em Adicionar dados > Adicionar uma conexão.
- Introduza um nome de ligação de fácil utilização.
- Selecione um Tipo de conexão de Hive Metastore e o tipo de Metastore do tipo interno.
- (Opcional) Adicione um comentário.
- Clique Criar.
SQL
Execute o seguinte comando em um bloco de anotações ou no editor de consultas Databricks SQL.
CREATE CONNECTION IF NOT EXISTS <connection-name> TYPE hive_metastore
OPTIONS (builtin true);
Etapa 2: Criar locais externos para dados em seu metastore herdado interno do Hive
Nesta etapa, você configura um local externo no Unity Catalog para controlar o acesso aos locais de armazenamento em nuvem que contêm os dados registrados em seu metastore interno herdado do Hive.
Locais externos são objetos protegíveis do Unity Catalog que associam credenciais de armazenamento a caminhos de contêiner de armazenamento em nuvem. Consulte Locais externos e credenciais de armazenamento.
Requerimentos
Para obter informações sobre armazenamento em nuvem e requisitos de permissão do Azure Databricks, consulte "Antes de começar" em Criar um local externo para conectar o armazenamento em nuvem ao Azure Databricks.
Se você estiver criando um local externo para a raiz DBFS herdada do seu espaço de trabalho, consulte "Antes de começar" em Criar um local externo para dados na raiz DBFS.
Opções para criar o local externo
O processo que o Databricks recomenda para criar um local externo no Unity Catalog depende da sua situação:
- Se você estiver federando um metastore interno do Databricks Hive que armazena dados em o DBFS monta ou raiz do DBFS, crie o local externo usando o Catalog Explorer e use a opção Copy from DBFS mount. Siga as instruções em Criar um local externo manualmente usando o Catalog Explorer ou Criar um local externo para dados no DBFS root.
- Caso contrário, você pode usar o Catalog Explorer ou comandos SQL. Siga as instruções no Criar um local externo manualmente usando o Catalog Explorer ou Criar um local externo usando o SQL.
Ativar o modo de fallback em locais externos
Assim que você cria um local externo no Unity Catalog, o acesso ao caminho representado por esse local externo é imposto pelas permissões do Unity Catalog quando você executa consultas na computação habilitada para Unity Catalog (usuário único, compartilhado ou SQL warehouse). Isso pode interromper cargas de trabalho existentes que não têm as permissões corretas do Catálogo Unity para acessar o caminho.
Quando um local externo está no modo de fallback, o sistema primeiro verifica as permissões do Unity Catalog da entidade de consulta no local e, se isso não for bem-sucedido, volta a usar credenciais existentes com escopo de cluster ou notebook, como perfis de instância ou propriedades de configuração do Apache Spark, para que suas cargas de trabalho existentes continuem a ser executadas ininterruptamente.
O modo de fallback é conveniente quando você está no processo de migração de sua carga de trabalho herdada. Depois de atualizar suas cargas de trabalho para serem executadas com êxito usando as permissões do Catálogo Unity, você deve desabilitar o modo de fallback para impedir que credenciais herdadas com escopo de cluster sejam usadas para ignorar a governança de dados do Catálogo Unity.
Você pode habilitar o modo de fallback usando o Catalog Explorer ou a API REST de locais externos do Unity Catalog.
Permissões necessárias: Proprietário do local externo.
Explorador de Catálogos
- No seu espaço de trabalho do Azure Databricks, clique Catálogo.
- Na página Acesso rápido, clique em Dados externos >.
- Selecione o local externo que deseja atualizar.
- Ative a alternância do modo Fallback e clique em Ativar para confirmar.
API
Os exemplos de curvas a seguir mostram como habilitar o modo de fallback quando você cria um local externo e quando atualiza um local externo existente.
Criando um novo local externo:
curl -X POST -H 'Authorization: Bearer <token>' \
https://<workspace-URL>/api/2.1/unity-catalog/external-locations \
--data
'{
"name": "fallback_mode_enabled_external_location",
"url": "abfss://container-name@storage-account.dfs.core.windows.net/external_location_container/url",
"credential_name": "external_location_credential",
"fallback": true
"skip_validation": true
}'
Atualizando um local externo:
curl -X PATCH \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
https://<workspace-URL>/api/2.1/unity-catalog/external-locations/<external-location-name> \
--data
'{
"comment": "fallback mode enabled",
"fallback": true
}'
Etapa 3: Criar um catálogo federado
Nesta etapa, você usa a conexão criada na etapa 1 para criar um catálogo federado no Unity Catalog que aponta para o local externo criado na etapa 2. Um catálogo federado é um tipo de catálogo estrangeiro , que é um objeto protegível no Unity Catalog que espelha um banco de dados ou catálogo em um sistema de dados externo, permitindo que você execute consultas nesses dados em seu espaço de trabalho do Azure Databricks, com acesso gerenciado pelo Unity Catalog. Nesse caso, o catálogo espelhado são os seus dados registados num metastore do Hive.
Sempre que um usuário ou fluxo de trabalho interage com o catálogo federado, os metadados são sincronizados a partir do metastore do Hive.
Requisitos
Requisitos de permissão:
Para criar o catálogo estrangeiro:
- O privilégio
CREATE CATALOG
no metastore do Unity Catalog. - Ou a propriedade da conexão ou o privilégio
CREATE FOREIGN CATALOG
na conexão. - Para inserir caminhos autorizados para o catálogo estrangeiro, você deve ter o privilégio de
CREATE FOREIGN SECURABLE
em um local externo que cubra esses caminhos. O proprietário do local externo tem esse privilégio por padrão.
Para trabalhar com o catálogo externo:
- Propriedade do catálogo ou
USE CATALOG
Requisitos de computação:
- Para criar o catálogo usando o Catalog Explorer: não é necessário calcular.
- Para criar o catálogo usando SQL: Databricks Runtime 13.3 LTS ou superior.
- Para trabalhar com o catálogo: um cluster compartilhado no Databricks Runtime 13.3 LTS, 14.3 LTS, 15.1 ou superior.
Criar o catálogo estrangeiro
Para criar um catálogo estrangeiro, você pode usar o Gerenciador de Catálogos ou o comando CREATE FOREIGN CATALOG
SQL em um bloco de anotações do Azure Databricks ou no editor de consultas SQL.
Observação
Você também pode usar a API do Unity Catalog. Consulte Criar um catálogo na referência da API REST do Databricks.
No seu espaço de trabalho do Azure Databricks, clique no para abrir o Explorador de Catálogo.
Na página Acesso rápido, clique no botão Adicionar dados e selecione Adicionar um catálogo.
Insira um nome de catálogo e selecione um tipo de catálogo do tipo Estrangeiro.
Selecione a Ligação que criaste na Etapa 1 no menu suspenso.
No campo
Caminhos autorizados, insira caminhos para os locais de armazenamento em nuvem que você definiu como locais externos na Etapa 2. Por exemplo, abfss://container@storageaccount.dfs.core.windows.net/demo,abfss://container@storageaccount.dfs.core.windows.net/depts/finance
.Os caminhos autorizados são uma camada adicional de segurança apenas para catálogos federados. Consulte Quais são os caminhos autorizados?.
Clique Criar.
(Opcional) Clique Configurar para abrir um assistente que o orienta na concessão de permissões no catálogo e na adição de tags. Você também pode executar essas etapas mais tarde.
Consulte Gerenciar privilégios no Unity Catalog e Aplicar tags a objetos protegíveis do Unity Catalog.
(Opcional) Vincule o catálogo a espaços de trabalho específicos.
Por padrão, os catálogos podem ser acessados de qualquer espaço de trabalho anexado ao metastore do Unity Catalog (restrito pelos privilégios do usuário). 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. Consulte Limitar o acesso do catálogo a espaços de trabalho específicos. Preencha o catálogo federado com os metadados do metastore do Hive.
Sempre que um usuário ou fluxo de trabalho interage com o catálogo federado, os metadados são sincronizados a partir do metastore do Hive. A primeira interação preenche o catálogo no Unity Catalog e torna seu conteúdo visível na interface do usuário do Catalog Explorer. Você pode popular o catálogo selecionando e iniciando um recurso de computação suportado por no Explorador de Catálogo. Você deve ser o proprietário do catálogo (que você é em virtude da criação do catálogo) ou um usuário com o privilégio
USE CATALOG
.Execute o seguinte comando SQL em um bloco de anotações ou no editor de consultas SQL. Os itens entre parênteses são opcionais. Substitua os valores dos marcadores de posição:
-
<catalog-name>
: Nome do catálogo no Azure Databricks. -
<connection-name>
: O nome do objeto de conexão que você criou na Etapa 1. -
<path1>,<path2>
: Caminhos para os locais de armazenamento em nuvem que você definiu como locais externos na Etapa 2. Por exemplo,abfss://container@storageaccount.dfs.core.windows.net/demo,abfss://container@storageaccount.dfs.core.windows.net/depts/finance
. Os caminhos autorizados são uma camada adicional de segurança apenas para catálogos federados. Consulte O que são caminhos autorizados?.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name> OPTIONS (authorized_paths '<path1>,<path2>');
Sempre que um usuário ou fluxo de trabalho interage com o catálogo federado, os metadados são sincronizados a partir do metastore do Hive.
-
Consulte também Gerenciar e trabalhar com catálogos estrangeiros.