Pular para o conteúdo principal

Commits de catálogo

Os commits do catálogo transferem a coordenação de commit do sistema de arquivos para o Unity Catalog, tornando o catálogo a única fonte de verdade para o estado da tabela do Delta Lake e Apache Iceberg. Isso possibilita transações de várias tabelas, planejamento de consulta mais rápido e acesso governado em todas as operações da tabela.

Transações tradicionais do Delta Lake coordenam commits no nível de tabela individual. Cada tabela gerencia seu próprio log de transações e detecção de conflitos independentemente. Ao mover a coordenação de *commits* para o nível do catálogo, isso permite que as organizações governem consistentemente todo o acesso ao Lakehouse por meio do Unity Catalog. Também permite que o Unity Catalog orquestre *commits* em várias tabelas dentro de um único limite de transação, mantendo as garantias ACID do Delta Lake.

Benefícios​

Commits do Catálogo oferecem as seguintes funcionalidades:

  • Transações que abrangem várias tabelas : Executar múltiplas declarações SQL em várias tabelas como um único commit atômico. Todas as alterações têm sucesso juntas ou falham juntas. Consulte Transações.
  • Acesso regido : leituras e gravações são coordenadas por meio do Unity Catalog, para que os mecanismos vejam o estado confirmado mais recente e as políticas de governança sejam aplicadas.
  • **Planejamento de consulta e gravações mais rápidos**: O Unity Catalog informa um cliente Delta sobre metadados em nível de tabela diretamente ao acessar uma tabela, ignorando o armazenamento em nuvem e eliminando uma grande fonte de latência de metadados.
  • Restrições exigíveis : O Unity Catalog valida ou rejeita alterações de esquema e restrições, impedindo atualizações incompatíveis que possam comprometer a integridade de dados ou cargas de trabalho a jusante.
  • Acesso externo : Gravar com segurança em tabelas gerenciadas do Unity Catalog de mecanismos externos. O Unity Catalog coordena commits para evitar corrupção e conflitos de concorrência. Consulte Acessar dados do Databricks usando sistemas externos.

Requisitos​

  • As tabelas devem ser tabelas gerenciadas pelo Unity Catalog (Delta ou Iceberg), incluindo tabelas de transmissão ou visualizações materializadas.
  • O Databricks Runtime 16.4 ou acima é necessário para ler, gravar ou criar tabelas gerenciadas com commits de catálogo habilitados.
  • O Databricks Runtime 18.0 ou superior é necessário para habilitar ou desabilitar commits de catálogo em tabelas gerenciadas existentes.
  • O Databricks Runtime 17.3 ou superior é necessário para ler ou gravar em tabelas de transmissão ou visualizações materializadas com commits de catálogo habilitados.
  • Em Spark Declarative Pipelines, o compute serverless ou o compute clássico com Databricks Runtime 17.3 e superior é necessário para ler, gravar, criar ou atualizar tabelas de streaming ou exibições materializadas com commits de catálogo habilitados.
  • O Databricks Runtime 18 LTS ou superior é necessário para desabilitar commits de catálogo em tabelas de transmissão ou materialized views existentes.

Habilite commits de catálogo para tabelas gerenciadas, tabelas de transmissão e views materializadas novas ou existentes.

Habilitar commit de catálogo para novas tabelas gerenciadas​

Use a propriedade de tabela delta.feature.catalogManaged ao criar uma tabela gerenciada:

SQL
CREATE TABLE sales_data (
sale_id BIGINT,
amount DECIMAL(10,2),
sale_date DATE
)
TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported');

Habilite commit de catálogo para tabelas gerenciadas existentes​

Use ALTER TABLE para adicionar commit de catálogo a uma tabela gerenciada existente:

SQL
ALTER TABLE sales_data SET TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported');
importante

Habilitar commits de catálogo em uma tabela existente sincroniza o estado da tabela com o catálogo. Esta operação pode levar vários minutos em tabelas com grandes volumes de operações de gravação.

Habilitar commits de catálogo para tabelas de transmissão ou views materializadas novas ou existentes​

Adicione a propriedade de tabela delta.feature.catalogManaged à definição da tabela de streaming ou view materializada e, em seguida, faça uma execução de atualização. Para um objeto existente, atualize sua definição original. ALTER TABLE ... SET TBLPROPERTIES não é compatível.

O exemplo a seguir habilita commit de catálogo para uma tabela de transmissão nova ou existente:

SQL
CREATE OR REFRESH STREAMING TABLE streaming_sales_data
TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported')
AS SELECT * FROM STREAM sales_data;

Para uma visualização materializada, use a mesma propriedade de tabela em sua definição de CREATE OR REFRESH MATERIALIZED VIEW.

Verifique se o commit do catálogo está habilitado​

Para verificar se uma tabela tem commits do catálogo ativados:

SQL
DESCRIBE DETAIL sales_data;

Se habilitado, catalogManaged aparece na coluna tableFeatures.

Use o Databricks Runtime 18.0 ou superior para desativar commit de catálogo em uma tabela gerenciada existente.

Para uma tabela de transmissão ou view materializada existente, use o Databricks Runtime 18 LTS ou acima.

Consulte Remover um recurso de tabela do Delta Lake e fazer downgrade do protocolo da tabela.

atenção

Não cancele operações de upgrade ou downgrade enquanto executa as instruções ALTER ou DROP. Uma interrupção pode deixar a tabela em um estado parcialmente atualizado ou rebaixado, impedindo todas as futuras leituras e gravações. Para reverter, execute a execução o comando apropriado novamente em vez de cancelar. Entre em contato com o suporte da Databricks se a tabela ficar bloqueada.

Limitações​

  • Não é possível ativar ou desativar commits de catálogo em tabelas gerenciadas existentes usando CREATE OR REPLACE TABLE ou REPLACE TABLE. Use CREATE TABLE com a propriedade delta.feature.catalogManaged para ativá-lo ao criar uma tabela gerenciada, ou ALTER TABLE para ativá-lo ou desativá-lo em uma tabela gerenciada existente.

  • Os commits do catálogo não são compatíveis com o acesso a dados externos em tabelas de transmissão ou views materializadas. Para usar commits de catálogo, você deve primeiro desabilitar o acesso externo. Consulte Habilitar acesso a dados externos para tabelas de streaming e views materializadas.

  • Tabelas com commits de catálogo habilitados são compartilhadas através de OpenSharing usando URLs pré-assinados em vez de tokens de cloud.

  • Clusters de usuário único não podem acessar tabelas de transmissão que têm commits de catálogo ativados.

Recursos adicionais​