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.
Visualização
As transações que gravam em tabelas Iceberg gerenciadas pelo Unity Catalog estão em visualização particular. Para participar desta prévia, envie o formulário de inscrição para a Prévia de tabelas Iceberg gerenciadas.
-
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.
Beta
Este recurso está em Beta. Os administradores do espaço de trabalho podem controlar o acesso a esse recurso na página Pré-visualizações . Consulte Gerenciar prévias do Databricks.
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.
Ativar commits do catálogo
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:
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:
ALTER TABLE sales_data SET TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported');
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:
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:
DESCRIBE DETAIL sales_data;
Se habilitado, catalogManaged aparece na coluna tableFeatures.
Desativar commit de catálogo
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.
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 TABLEouREPLACE TABLE. UseCREATE TABLEcom a propriedadedelta.feature.catalogManagedpara ativá-lo ao criar uma tabela gerenciada, ouALTER TABLEpara 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.