Suporte ao arquivamento no Azure Databricks

Importante

Esse recurso está na Visualização Pública do Databricks Runtime 13.3 LTS e superior.

O suporte ao arquivamento no Azure Databricks apresenta uma coleção de capacidades que permitem que você utilize políticas de ciclo de vida com base na nuvem no armazenamento de objetos na nuvem contendo tabelas Delta.

Importante

O Azure Databricks só dá suporte ao arquivamento para o Azure Archive. Consulte os documentos do Azure sobre a otimização de custos com o gerenciamento do ciclo de vida.

Por que você deve habilitar o suporte a arquivamento?

O suporte ao arquivamento permite apenas consultas que podem ser respondidas corretamente sem tocar em arquivos arquivados. Essas consultas incluem aquelas que:

  • Consultam somente metadados.
  • Têm filtros que não exigem a verificação de arquivos arquivados.

Todas as consultas que exigem dados em arquivos arquivados falham.

Importante

O Azure Databricks nunca retorna resultados para consultas que exigem arquivos arquivados para retornar o resultado correto.

Sem o suporte ao arquivamento, as operações com tabelas Delta podem ser interrompidas porque os arquivos de dados ou os arquivos de log de transações foram movidos para locais arquivados e não estão disponível quando consultados. O suporte ao arquivamento introduz otimizações para evitar a consulta de dados arquivados quando possível. Ele também adiciona nova sintaxe para identificar arquivos que devem ser restaurados do armazenamento de arquivamento para concluir consultas.

Habilitar o suporte a arquivamento para uma tabela no Azure Databricks não cria ou altera as políticas de ciclo de vida definidas para o armazenamento de objetos de nuvem. Para obter os resultados desejados, a política e a configuração delta.timeUntilArchived do ciclo de vida da nuvem devem ser iguais.

Consultas otimizadas para dados arquivados

O suporte ao arquivamento no Azure Databricks otimiza as seguintes consultas nas tabelas Delta:

Consulta Novo comportamento
SELECT * FROM <table_name> LIMIT <limit> [WHERE <partition_predicate>] Ignore automaticamente os arquivos arquivados e retorne os resultados dos dados em uma camada de armazenamento não arquivada.
Comandos de manutenção do Delta Lake: OPTIMIZE, ZORDER, ANALYZE, PURGE Ignorar automaticamente os arquivos arquivados e executar a manutenção no restante da tabela.
Instruções DDL e DML que sobrescrevem ou excluem dados, incluindo as seguintes: REPLACE TABLE, INSERT OVERWRITE, TRUNCATE TABLE, DROP TABLE Marcar como excluídas as entradas do log de transações para os arquivos de dados arquivados de destino.
FSCK REPAIR TABLE Ignore os arquivos arquivados e verifique apenas os arquivos que não atingiram a política de ciclo de vida.

Confira Limitações.

Mensagens antecipadas de falha e erro

Para consultas que precisam verificar arquivos arquivados para gerar resultados corretos, configurar o suporte ao arquivamento para o Delta Lake garante o seguinte:

  • As consultam falham antecipadamente ao tentar acessar arquivos arquivados, reduzindo o desperdício de computação e permitindo que os usuários se adaptem rapidamente e executem novamente as consultas.
  • As mensagens de erro informam aos usuários que uma consulta falhou porque a consulta tentou acessar arquivos arquivados.

Os usuários podem gerar um relatório de arquivos que devem ser restaurados usando a sintaxe SHOW ARCHIVED FILES. Consulte Mostrar arquivos arquivados.

Importante

Se você receber o erro Not enough files to satisfy LIMIT, sua tabela não terá linhas de dados suficientes em arquivos não arquivados para atender ao número de registros especificado por LIMIT. Baixe a cláusula LIMIT para encontrar linhas não arquivadas suficientes para atender ao LIMIT especificado.

Habilitar o suporte ao arquivamento

Você deve habilitar o suporte de arquivamento no Azure Databricks para tabelas Delta especificando manualmente o intervalo de arquivamento configurado na política de gerenciamento do ciclo de vida da nuvem subjacente, como no exemplo de sintaxe a seguir:

ALTER TABLE <table_name> SET TBLPROPERTIES(delta.timeUntilArchived = 'X days');

Habilitar o suporte ao arquivamento efetivamente instrui o Azure Databricks a ignorar arquivos mais antigos do que o período especificado. Se você habilitar essa configuração sem ter políticas de ciclo de vida definidas para o armazenamento de objetos de nuvem, o Azure Databricks ainda ignorará os arquivos com base nesse limite especificado, mas nenhum dado será arquivado.

O Delta Lake não interage diretamente com as políticas de gerenciamento do ciclo de vida configuradas na sua conta de nuvem. Se você atualizar a política na sua conta na nuvem, deverá atualizar a política na sua tabela Delta. Consulte Alterar a regra de transição do gerenciamento do ciclo de vida.

Importante

O suporte ao arquivamento depende inteiramente de ambientes de computação compatíveis com o Azure Databricks e só funciona para tabelas Delta. A configuração do suporte a arquivamento não altera o comportamento, a compatibilidade ou o suporte em clientes Delta Lake OSS ou no Databricks Runtime 12.2 LTS e versões anteriores.

Mostrar os arquivos arquivados

Para identificar arquivos que devem ser restaurados para concluir uma determinada consulta, use SHOW ARCHIVED FILES, como no exemplo a seguir:

SHOW ARCHIVED FILES FOR table_name [ WHERE predicate ];

Essa operação retorna URIs para os arquivos arquivados como um DataFrame do Spark. Restaure os arquivos arquivados necessários seguindo as instruções documentadas do provedor de armazenamento de objetos. Para obter informações sobre como o Azure Databricks verificar se há dados restaurados, consulte Como o Azure Databricks obtém uma amostragem de dados restaurados?.

Observação

Durante essa operação, o Delta Lake só tem acesso às estatísticas de dados contidas no log de transações. Por padrão, estas são as seguintes estatísticas coletadas nas primeiras 32 colunas na tabela:

  • Valores mínimos
  • Valores máximos
  • Contagens nulas
  • Número total de registros

Os arquivos retornados incluem todos os arquivos arquivados que devem ser lidos para determinar se os registros que cumprem um predicado existem ou não no arquivo. O Databricks recomenda fornecer predicados que incluam campos nos quais os dados são particionados, ordenados em z ou clusterizados para reduzir o número de arquivos que devem ser restaurados.

Atualizar ou excluir dados arquivados

A operação falhará se você executar uma operação MERGE, UPDATE ou DELETE que afeta dados em arquivos arquivados. Você deve restaurar dados para uma camada de armazenamento que dê suporte à recuperação rápida para executar essas operações. Use SHOW ARCHIVED FILES para determinar os arquivos que você deve restaurar.

Como o Azure Databricks obtém uma amostragem de dados restaurados?

Quando o Azure Databricks prepara uma verificação de uma tabela com suporte a arquivamento habilitado, ele obtém uma amostragem de arquivos mais antigos do que o período de retenção especificado exigido pela consulta para determinar se os arquivos foram restaurados ou não.

Se os resultados indicarem que os arquivos de exemplo presumidamente arquivados foram restaurados, o Azure Databricks pressupõe que todos os arquivos da consulta foram restaurados e a consulta é processada.

Limitações

As seguintes limitações existem:

  • Não há suporte para políticas de gerenciamento de ciclo de vida que não sejam baseadas no tempo de criação do arquivo. Isso inclui políticas baseadas em tempo de acesso e políticas baseadas em marcas.
  • Você não pode usar DROP COLUMN em uma tabela com arquivos arquivados.
  • REORG TABLE APPLY PURGE faz a melhor tentativa, mas só funciona com arquivos de vetores de exclusão e arquivos de dados referenciados que não estejam arquivados. PURGE não pode excluir os arquivos arquivados do vetor de exclusão.
  • A extensão da regra de transição do gerenciamento do ciclo de vida resulta em um comportamento inesperado. Consulte Estender a regra de transição do gerenciamento do ciclo de vida.

Alterar a regra de transição do gerenciamento do ciclo de vida

Se você alterar o intervalo de tempo da regra de transição do gerenciamento do ciclo de vida da nuvem, deverá atualizar a propriedade delta.timeUntilArchived.

Se o intervalo de tempo antes do arquivamento for reduzido (menos tempo desde a criação do arquivo), o suporte de arquivamento para a tabela Delta continuará funcionando normalmente depois que a propriedade da tabela for atualizada.

Estender a regra de transição do gerenciamento do ciclo de vida

Se o intervalo de tempo anterior ao arquivamento for estendido (para adicionar mais tempo antes do disparo do arquivamento), a atualização da propriedade delta.timeUntilArchived para o novo valor pode levar a erros. Os provedores de nuvem não restauram arquivos do armazenamento arquivado automaticamente quando as políticas de retenção de dados são alteradas. Isso significa que os arquivos previamente qualificados para arquivamento, mas que agora não são considerados qualificados para arquivamento, ainda estão arquivados.

Importante

Para evitar erros, nunca defina a propriedade delta.timeUntilArchived com um valor maior do que a idade real dos dados arquivados mais recentemente.

Considere um cenário em que o intervalo de tempo para o arquivamento é alterado de 60 dias para 90 dias:

  1. Todos os registros entre 60 e 90 dias são arquivados quando a política é alterada.
  2. Por 30 dias, nenhum arquivo novo é arquivado (os arquivos mais antigos não arquivados têm 60 dias quando a política é estendida).
  3. Após 30 dias, a política de ciclo de vida descreve corretamente todos os dados arquivados.

A configuração delta.timeUntilArchived rastreia o intervalo de tempo definido em relação ao tempo de criação do arquivo registrado pelo log de transações Delta. Ele não tem conhecimento explícito da política subjacente. Durante o período de atraso entre o limite de arquivamento antigo e o novo limite de arquivamento, você pode adotar uma das seguintes abordagens para evitar a consulta de arquivos arquivados:

  1. Você pode deixar a configuração delta.timeUntilArchived com o limite antigo até que tenha passado tempo suficiente para que todos os arquivos sejam arquivados.
    • Seguindo o exemplo acima, todos os dias, durante os primeiros 30 dias, dados de outro dia seriam considerados arquivados pelo Azure Databricks, mas ainda precisam ser arquivados pelo provedor de nuvem. Isso não resulta em um erro, mas ignora alguns arquivos de dados que poderiam ser consultados.
    • Após 30 dias, atualize o delta.timeUntilArchived para 90 days.
  2. É possível atualizar a configuração delta.timeUntilArchived todos os dias para refletir o intervalo atual durante o período de atraso.
    • Embora a política de nuvem esteja definida para 90 dias, a idade real dos dados arquivos é alterada em tempo real. Por exemplo, após 7 dias, a configuração de delta.timeUntilArchived para 67 days reflete com precisão a idade de todos os arquivos de dados arquivados.
    • Essa abordagem só é necessária se você precisar de acesso a todos os dados em camadas de acesso frequente.

Observação

Atualizar o valor de delta.timeUntilArchived não altera quais dados são arquivados. Ele altera apenas os dados que o Azure Databricks trata como se estivessem arquivados.