Ler em inglês

Partilhar via


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.

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.

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.

Explorador de Catálogos

  1. No seu espaço de trabalho do Azure Databricks, clique no ícone do CatálogoCatálogo.

  2. Na página Acesso rápido, clique em Adicionar dados > Adicionar uma conexão.

  3. Na página Noções básicas de conexão do assistente Configurar conexão, insira um Nome da conexão amigável.

  4. Selecione um Tipo de conexão de Hive Metastore e o tipo de Metastore do tipo interno.

  5. (Opcional) Adicione um comentário.

  6. Clique Avançar.

  7. (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.

  8. Clique em Criar conexão.

  9. Na página Noções básicas do catálogo, insira um nome para o catálogo estrangeiro.

  10. 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?.

  11. Clique Criar catálogo.

  12. 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.

  13. 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.

  14. Conceder privilégios no catálogo.

    1. Clique , Conceder.
    2. 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.
    3. 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 e modify privilégios sobre os objetos no catálogo.
      • Selecione manualmente os privilégios a conceder.
    4. Clique , Conceder.
  15. Clique Avançar.

  16. 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.

  17. (Opcional) Adicione um comentário.

  18. Clique Salvar.

SQL

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.

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:

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. 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

  1. No seu espaço de trabalho do Azure Databricks, clique no ícone do CatálogoCatálogo.
  2. Na página Acesso rápido, clique em Dados externos >.
  3. Selecione o local externo que deseja atualizar.
  4. Ative a alternância do modo Fallback e clique em Ativar para confirmar.

Interface de Programação de Aplicações (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 estrangeiro

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

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.

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.

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.

Explorador de Catálogos

  1. No seu espaço de trabalho do Azure Databricks, clique no ícone Catálogo para abrir o Explorador de Catálogo.

  2. Na página Acesso rápido, clique no botão Adicionar dados e selecione Adicionar um catálogo.

  3. Insira um nome de catálogo e selecione um tipo de catálogo do tipo Estrangeiro.

  4. Selecione a Ligação que criaste na Etapa 1 no menu suspenso.

  5. 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?.

  6. Clique Criar.

  7. (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.

  8. (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.

  9. 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.

SQL

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).