Habilitar federação de catálogo Snowflake
Este artigo mostra como habilitar a federação Snowflake usando a federação de catálogo. A federação de catálogos permite que as consultas Unity Catalog sejam executadas diretamente no armazenamento de arquivos, proporcionando melhor desempenho e custo-benefício em comparação à federação de consultas.
Com a federação de catálogo, o Unity Catalog acessa diretamente a tabela estrangeira no armazenamento de objetos. A consulta é executada somente usando Databricks compute, que é mais econômico e otimizado em termos de desempenho.
Tanto a federação de catálogo quanto a federação de consulta dependem dos mesmos métodos de autenticação para configurar a conexão:
- OAuthSnowflake
- ID de entrada da Microsoft
- access tokenOAuth
- keyprivada PEM
- Autenticação básica (nome de usuário/senha)
Antes de começar
Você deve atender aos seguintes requisitos para executar consultas federadas no Snowflake usando federação de catálogo:
Requisitos do workspace:
- Espaço de trabalho preparado para o Catálogo do Unity.
Requisitos de computação:
- Conectividade de rede do seu recurso compute aos sistemas de banco de dados de destino. Veja recomendações de rede para a Federação Lakehouse.
- Databricks compute deve usar Databricks Runtime 13.3 LTS ou acima e o modo de acesso Padrão ou Dedicado .
- Os SQL warehouse devem ser Pro ou Serverless e devem utilizar a versão 2023.40 ou superior.
Permissões necessárias:
- Para criar uma conexão, é preciso ser administrador de metastore ou usuário com o privilégio
CREATE CONNECTION
no metastore do Unity Catalog anexado ao espaço de trabalho. - Para criar um catálogo externo é preciso ter a permissão
CREATE CATALOG
no metastore e ser proprietário da conexão ou ter o privilégioCREATE FOREIGN CATALOG
na conexão.
Outros requisitos de permissão são definidos em cada seção baseada em tarefa a seguir.
- Use Databricks Runtime 16.4 LTS ou acima ou Databricks SQL.
Configurar federação de catálogo
Os passos gerais para configurar a federação de catálogo são semelhantes aos da configuração da federação de consulta: crie uma conexão com Snowflake primeiro e depois crie e configure um catálogo externo. No entanto, você também deve criar uma credencial de armazenamento e um local externo para os caminhos para as tabelas do Apache Iceberg registradas no Snowflake.
-
Crie um local externo para tabelas Iceberg.
Você deve configurar um local externo no Unity Catalog para controlar o acesso aos locais de armazenamento cloud que contêm as tabelas Iceberg registradas no seu banco de dados Snowflake . Locais externos são objetos protegíveis Unity Catalog que associam credenciais de armazenamento a caminhos de contêineres de armazenamento cloud . Veja Visão geral de locais externos.
Você pode criar um local externo usando as seguintes interfaces:
O local externo será especificado como um caminho autorizado durante a configuração do catálogo externo.
-
Crie uma conexão com o Snowflake Horizon Catalog e crie um catálogo externo usando um dos métodos de autenticação listados acima. Você deve especificar um local no armazenamento cloud onde os metadados serão armazenados para tabelas Iceberg neste catálogo.
Configurar um local de armazenamento no catálogo permite a leitura de tabelas Iceberg em um catálogo externo por meio do armazenamento de objetos. Ler ou gravar em tabelas Iceberg por meio do protocolo JDBC não estará mais disponível (tabelas não Iceberg não serão afetadas).
Você também deve adicionar Caminhos autorizados, os caminhos de armazenamento cloud que podem ser acessados por meio do catálogo. Somente tabelas que se enquadram nesses caminhos podem ser consultadas por meio do catálogo federado. Os caminhos devem ser cobertos por locais externos.
Limitações da federação de catálogos
A execução de consultas federadas no Snowflake usando federação de catálogo tem as seguintes limitações:
-
Algumas tabelas iceberg só podem ser lidas usando federação de consultas:
- Tabelas com locais incompatíveis com URI (que contêm caracteres especiais).
- Tabelas com localização de metadados fora da localização da tabela.
- Tabelas com locais que têm esquemas não suportados (somente
s3
,s3a
,s3n
,abfs
,abfss
,gs
,r2
,wasb
ewasbs
são suportados).
-
Tabelas Iceberg estrangeiras acessadas de mecanismos externos devem ser atualizadas usando
ALTER TABLE <table_name> REFRESH
para garantir consistência de leitura/gravação entre gravações no catálogo externo e leituras com o Unity Catalog. -
Tabelas com nomes idênticos, ignorando maiúsculas e minúsculas, entram em conflito. A primeira tabela a ser carregada é a que aparece.
-
No Azure, as tabelas do Snowflake Iceberg não podem estar no local raiz do contêiner.
Consulte as limitações da tabela Iceberg para obter informações sobre as limitações relacionadas ao Iceberg.
Determinar se uma tabela Snowflake estrangeira usa federação de catálogo ou consulta
As tabelas Snowflake estrangeiras lidas usando a federação de catálogo exibem o formato de origem Iceberg no Catalog Explorer. As tabelas Iceberg lidas usando a federação de consultas exibem o formato de origem Snowflake no Catalog Explorer. As consultas executadas em tabelas com ambos os formatos de armazenamento são executadas usando federação de consultas, que usa Snowflake compute.
Modo de fallback
Quando você consulta uma tabela em um catálogo Snowflake federado, Databricks tenta automaticamente ler a tabela Iceberg diretamente do armazenamento cloud para um desempenho ideal. Se a tabela não atender aos critérios de acesso direto, o Databricks volta a federar a consulta ao Snowflake usando JDBC. A tabela a seguir descreve o fluxo de resolução de consulta:
Estágio de resolução de consulta | Descrição |
---|---|
Descoberta de catálogo | Durante o planejamento da consulta, o Databricks Runtime verifica com o Unity Catalog e detecta que a tabela reside em um catálogo federado do Snowflake. |
Resolução de metadados do Snowflake | Usando a conexão do Unity Catalog, o Databricks Runtime emite consultas ao Snowflake para:
|
Tentativa de acesso direto | Se algum dos critérios a seguir falhar, o Databricks Runtime federará a consulta usando o driver Snowflake JDBC. A tabela exibe o formato de origem do Snowflake no Catalog Explorer.
Se todos os critérios forem atendidos, o Databricks Runtime verifica os metadados retornados e lê a tabela Iceberg diretamente do caminho de armazenamento de objetos. A tabela exibe o formato de origem do Iceberg no Catalog Explorer. |