Formação
Habilitar a federação de metastore do Hive para um espaço de trabalho herdado Metastore do Hive
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: ativar o Unity Catalog para governar tabelas registadas num metastore do Hive.
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.
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.
- O privilégio
CREATE CONNECTION
no metastore do Unity Catalog.
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.
Nota
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
.
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.
Na página Noções básicas de conexão do assistente Configurar conexão, insira um Nome da conexão amigável.
Selecione um Tipo de conexão de Hive Metastore e o tipo de Metastore do tipo interno.
(Opcional) Adicione um comentário.
Clique Avançar.
(Opcional) Na página de Detalhes da Conexão , insira o caminho completo para o diretório Hive Warehouse .
Você só precisa disso se não quiser usar o local padrão.
Clique em Criar conexão.
Na página Noções básicas do catálogo, insira um nome para o catálogo estrangeiro.
Para os caminhos autorizados: escolha caminhos de armazenamento em nuvem que podem ser acessados através do catálogo. Somente as tabelas que se enquadram nesses caminhos podem ser consultadas por meio do catálogo federado. Os caminhos devem ser cobertos por localizações externas. Para obter mais informações, consulte O que são caminhos autorizados?.
Clique Criar catálogo.
Na página Access, selecione os espaços de trabalho nos quais os utilizadores podem aceder ao catálogo que criou. Você pode selecionar Todos os espaços de trabalho têm acessoou clicar Atribuir a espaços de trabalho, selecionar os espaços de trabalho e, em seguida, clicar Atribuir.
Adicione um Proprietário que poderá gerenciar o acesso a todos os objetos no catálogo. Comece a digitar um usuário ou grupo na caixa de texto e clique no usuário ou grupo nos resultados retornados.
Conceder privilégios no catálogo.
- Clique , Conceder.
- Especifique os Principals que terão acesso aos objetos do catálogo. Comece a digitar um usuário ou grupo na caixa de texto e clique no usuário ou grupo nos resultados retornados.
- Selecione as predefinições de Privilégio para conceder a cada utilizador ou grupo. Todos os usuários da conta recebem
BROWSE
por padrão.- Selecione Leitor de Dados no menu suspenso para conceder privilégios
read
em objetos no catálogo. - Selecione Editor de Dados no menu suspenso para conceder
read
emodify
privilégios sobre os objetos no catálogo. - Selecione manualmente os privilégios a conceder.
- Selecione Leitor de Dados no menu suspenso para conceder privilégios
- Clique , Conceder.
Clique Avançar.
Na página Metadados, opcionalmente, especifique tags como pares chave-valor. Para obter mais informações, consulte Aplicar tags a objetos protegíveis do Unity Catalog.
(Opcional) Adicione um comentário.
Clique Salvar.
Execute o seguinte comando em um bloco de anotações ou no editor de consultas SQL.
CREATE CONNECTION IF NOT EXISTS <connection-name> TYPE hive_metastore
OPTIONS (
builtin true,
warehouse_directory '/path/to/warehouse-directory' );
Inclui warehouse_directory
apenas se não quiseres usar o local padrão do diretório de armazém do Hive para o teu metastore do Hive a partir da configuração do cluster. Esse caminho é usado para derivar o local de tabelas ou esquemas gerenciados quando eles são criados a partir do catálogo federado.
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.
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.
O processo que o Databricks recomenda para criar um local externo no Unity Catalog depende da sua situação:
- Se estiver a federar um metastore interno do Databricks Hive que armazena dados em montagens do DBFS ou na raiz do DBFS, crie o local externo usando o Catalog Explorer e use a opção Copiar da montagem DBFS. 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.
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. 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.
- No seu espaço de trabalho do Azure Databricks, clique no
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.
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
}'
Nota
Talvez você já tenha concluído esta etapa se tiver usado o assistente de criação de conexão no Gerenciador de Catálogos para concluir a Etapa 1. Se você não criou o catálogo estrangeiro quando concluiu a etapa 1 ou se usou SQL para criar a conexão, você deve seguir as instruções nesta seção.
Nesta etapa, você usa a conexão criada na etapa 1 para criar um catálogo externo no Unity Catalog que aponta para o local externo criado na etapa 2. Um catálogo estrangeiro é um objeto segurável no Unity Catalog que espelha um banco de dados ou catálogo em um sistema de dados externo, permitindo que executes consultas nesses dados no teu espaço de trabalho do Azure Databricks, com acesso gerido 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 estrangeiro, os metadados são sincronizados do metastore do Hive.
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 ambiente de computação com modo de acesso padrão no Databricks Runtime 13.3 LTS, 14.3 LTS, 15.1 ou superior.
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.
Consulte também Gerenciar e trabalhar com catálogos estrangeiros.
Nota
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 para catálogos estrangeiros suportados pela federação do Hive metastore. 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 estrangeiro com os metadados do metastore do Hive.
Sempre que um usuário ou fluxo de trabalho interage com o catálogo estrangeiro, os metadados são sincronizados 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 para catálogos estrangeiros apoiados pela federação de metastore do Hive. Consulte Quais são os caminhos autorizados?. Consulte Quais são os caminhos autorizados?. Se você não adicionar caminhos autorizados ao criar o catálogo, poderá usáALTER CATALOG
para adicioná-los mais tarde. Consulte ALTER CATALOG.
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.
Nota
Se uma tabela estrangeira tiver um local de armazenamento no DBFS e o ponto de montagem do DBFS que faz o backup da tabela tiver sido remapeado para um caminho diferente desde que a tabela foi acessada pela última vez, o acesso à tabela falhará com o código de erro UC_RESOLVED_DBFS_PATH_MISMATCH
. Use o seguinte comando para atualizar o local DBFS resolvido e corrigir o erro:
REFRESH FOREIGN TABLE my_federated_catalog.schema.table RESOLVE DBFS LOCATION;
Você deve ser um PROPRIETÁRIO ou ter o privilégio GERENCIAR na mesa. Ver REFRESH FOREIGN (CATALOG, SCHEMAe TABLE).