Suporte de arquivamento no Databricks
Visualização
Esse recurso está em Public Preview para Databricks Runtime 13.3 LTS e acima.
Com o suporte ao arquivamento no Databricks, você pode usar políticas de ciclo de vida baseadas em cloud no armazenamento de objetos em cloud que contém tabelas do Delta Lake. Ativar o suporte ao arquivamento em uma tabela do Delta Lake informa efetivamente ao Databricks que ignore os arquivos mais antigos do que o período especificado na tabela.
As políticas de ciclo de vida da cloud reduzem os custos de armazenamento ao mover arquivos mais antigos para um nível de armazenamento de arquivo. Sem suporte de arquivamento, uma política de ciclo de vida pode quebrar consultas em uma tabela Delta Lake, porque os arquivos de dados que as consultas leem não estão mais disponíveis. Consulte Por que você deve habilitar o suporte de arquivamento?.
Quando usar suporte de arquivamento
Ative o suporte de arquivamento em uma tabela quando tudo o seguinte for verdadeiro:
- Você usa uma política de ciclo de vida que arquiva os arquivos de dados da tabela com base na hora de criação do arquivo.
- A maioria das query na tabela lê dados recentes ou filtra arquivos arquivados.
- As queries que precisam de dados arquivados são pouco frequentes e você pode esperar que alguém restaure esses arquivos no armazenamento do seu provedor de cloud antes de executar a query novamente. Consulte Restaurar arquivos arquivados.
Não use suporte de arquivamento se suas query verificarem regularmente toda a história da tabela. As consultas que exigem arquivos arquivados falham. O suporte de arquivamento também não funciona com políticas de ciclo de vida baseadas no tempo de acesso ou em tags. Consulte Limitações.
Requisitos
O suporte para arquivamento requer o S3 Glacier Deep Archive ou o Glacier Flexible Retrieval. Consulte a documentação da AWS sobre como trabalhar com objetos arquivados.
O Amazon S3 Glacier Instant Retrieval não requer a configuração do suporte de arquivamento. No entanto, quando o senhor executa uma consulta, todos os arquivos digitalizados são recuperados. Databricks recomenda o uso da visualização para restringir consultas a tabelas armazenadas no Glacier Instant Retrieval com políticas de ciclo de vida configuradas.
O recurso opcional de camadas de arquivamento assíncrono inteligente do Amazon S3 não é compatível com o suporte a arquivamento do Databricks, pois o arquivamento é baseado no tempo de acesso e não no tempo de criação do arquivo.
Por que você deve ativar o suporte de arquivamento?
O suporte de arquivamento permite apenas consultas que retornam resultados corretos sem tocar em arquivos arquivados. Essas query incluem aquelas que:
- Consulte somente metadados.
- Tenha filtros que não exijam a digitalização de nenhum arquivo arquivado.
Todas as consultas que exigem dados em arquivos arquivados falham.
O Databricks nunca retorna resultados para consultas que exigem arquivos arquivados para retornar o resultado correto.
Habilitar o suporte a arquivamento para uma tabela no Databricks não cria nem altera as políticas de ciclo de vida definidas para o seu armazenamento de objetos cloud . Consulte Alterar a regra de transição do gerenciamento do ciclo de vida.
Sem suporte de arquivamento, as operações em tabelas do Delta Lake podem falhar porque os arquivos de dados ou arquivos de log de transações foram movidos para locais arquivados e não estão disponíveis quando consultados. O suporte de arquivamento introduz otimizações para evitar a consulta de dados arquivados quando possível. Ele também adiciona uma nova sintaxe para identificar arquivos que devem ser restaurados do armazenamento de arquivo para concluir as consultas.
Consultas otimizadas para dados arquivados
O suporte de arquivamento no Databricks otimiza essas consultas em tabelas do Delta Lake.
Consulta | Novo comportamento |
|---|---|
| Ignore automaticamente os arquivos arquivados e retorne os resultados dos dados em um nível de armazenamento não arquivado. |
Delta Lake comando de manutenção: | 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 | Marcar como excluídas as entradas do log de transações dos arquivos de dados arquivados de destino. |
| Ignore os arquivos arquivados e verifique somente os arquivos que não atingiram a política de ciclo de vida. |
Mensagens antecipadas de falha e erro
Para consultas que devem digitalizar arquivos arquivados para gerar resultados corretos, a configuração do suporte de arquivamento para o Delta Lake tem estes efeitos:
- As consultas falham antecipadamente se tentarem acessar arquivos arquivados, reduzindo o desperdício compute e permitindo que os usuários adaptem e reexecutem as consultas rapidamente.
- As mensagens de erro informam aos usuários que uma consulta falhou porque a consulta tentou acessar os 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.
Se você receber o erro Not enough files to satisfy LIMIT, sua tabela não tem linhas de dados suficientes em arquivos não arquivados para satisfazer o número de registros especificado por LIMIT. Abaixe a cláusula LIMIT para encontrar linhas não arquivadas suficientes para atender ao LIMIT especificado. Consulte as limitações.
Ativar suporte de arquivamento
Você ativa o suporte ao arquivamento para tabelas do Delta Lake especificando manualmente o intervalo de arquivamento configurado na política subjacente de gerenciamento do ciclo de vida do cloud.
ALTER TABLE <table_name> SET TBLPROPERTIES(delta.timeUntilArchived = 'X days');
Definir um tempo timeUntilArchived instrui o Databricks a ignorar arquivos em sua tabela Delta Lake que sejam mais antigos do que o período de tempo especificado. Essa configuração é independente das políticas de ciclo de vida da sua account cloud . Alterações em uma não afetam a outra. Se você atualizar a política de ciclo de vida em sua account cloud , também deverá atualizar a configuração de arquivamento em sua tabela Delta Lake . Consulte Alterar a regra de transição do gerenciamento do ciclo de vida.
Ao definir uma nova política de ciclo de vida na sua cloud account, pode haver um atraso antes que a política seja totalmente propagada para todos os sistemas S3. Consulte Definindo a configuração do ciclo de vida.
Se você habilitar essa configuração sem políticas de ciclo de vida definidas para seu armazenamento de objetos cloud , o suporte a arquivamento permitirá que as consultas sejam bem-sucedidas e os resultados incluirão dados dos arquivos marcados para arquivamento. Veja Como o Databricks realiza a amostragem para dados restaurados?
Sua política de ciclo de vida cloud não deve arquivar o log de transações Delta (diretório _delta_log/ ). Consulte as limitações.
O suporte ao arquivamento depende inteiramente de ambientes de compute compatíveis com Databricks e só funciona para tabelas Delta Lake. Configurar o suporte ao arquivamento não altera o comportamento, a compatibilidade ou o suporte em clientes OSS Delta Lake ou Databricks Runtime 12.2 LTS e abaixo.
Mostrar arquivos arquivados
Para identificar arquivos que devem ser restaurados para concluir uma determinada consulta, use SHOW ARCHIVED FILES.
SHOW ARCHIVED FILES FOR table_name [ WHERE predicate ];
Esta operação retorna nomes de arquivos para arquivos arquivados como um Spark DataFrame. Restaure os arquivos arquivados necessários seguindo as instruções documentadas do seu provedor de armazenamento de objetos. Consulte Restaurar arquivos arquivados.
Para informações sobre como o Databricks verifica dados restaurados, consulte Como o Databricks faz a amostragem de dados restaurados?.
Durante esta operação, o Delta Lake só tem acesso às estatísticas de dados contidas no log de transações. Por default, estas são as estatísticas coletadas nas primeiras 32 colunas da 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. Databricks recomenda o fornecimento de predicados que incluam campos nos quais os dados são particionados, Z-ordered, ou agrupados para reduzir o número de arquivos que devem ser restaurados.
Restaurar arquivos arquivados
Para identificar todos os arquivos que exigem restauração, use SHOW ARCHIVED FILES para view a lista de arquivos arquivados.
Use as APIs de restauração de objeto S3 para restaurar seus arquivos para uma camada de armazenamento de recuperação rápida. Consulte Restaurando um objeto arquivado.
Após restaurar os arquivos no armazenamento do seu provedor de cloud, é possível consultar sua tabela. O suporte a arquivamento reconhece automaticamente os arquivos restaurados. Para informações sobre como o Databricks verifica dados restaurados, consulte Como o Databricks faz a amostragem de dados restaurados?.
Atualizar ou excluir dados arquivados
A operação falhará se você executar uma operação MERGE, UPDATE ou DELETE que afete dados em arquivos arquivados. É preciso restaurar dados para uma camada de armazenamento que suporte recuperação rápida para a execução dessas operações. Use SHOW ARCHIVED FILES para identificar os arquivos que você deve restaurar (consulte Restaurar arquivos arquivados).
Como a Databricks faz a amostragem dos dados restaurados?
Quando o Databricks prepara uma varredura em uma tabela com suporte a arquivamento ativado, ele coleta amostras de arquivos mais antigos do que o período de retenção especificado pela consulta para determinar se os arquivos foram restaurados ou não. Se os resultados indicarem que os arquivos amostrados, presumivelmente arquivados, foram restaurados, o Databricks assume que todos os arquivos da consulta foram restaurados e a consulta é processada. Os resultados incluem dados dos arquivos marcados para arquivamento.
A amostragem pode não se aplicar a todas as consultas; consulte Limitações.
Limitações
O suporte de arquivamento tem estas limitações:
- O suporte para arquivamento aplica-se somente a arquivos de dados. Se algum arquivo no log de transações Delta (diretório
_delta_log/) for movido para uma camada de armazenamento arquivada, a tabela se tornará completamente inacessível e todas as consultas à tabela falharão. Você deve configurar sua política de ciclo de vida cloud para que o caminho_delta_log/não seja incluído no arquivamento. Veja exemplos de configurações do ciclo de vida do S3. - Não há suporte para políticas de gerenciamento do 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 tags.
- Você não pode usar
DROP COLUMNem uma tabela com arquivos arquivados. REORG TABLE APPLY PURGEfaz a melhor tentativa, mas só funciona na exclusão de arquivos vetoriais e arquivos de dados referenciados que não estão arquivados.PURGEnão pode excluir arquivos vetoriais de exclusão arquivados.- Estender a 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.
LIMITConsultas em tabelas com suporte a arquivamento ativado não acionam a amostragem de dados restaurados. Se os dados de uma tabela forem restaurados, a maioria das consultas terá sucesso ao consultar os dados restaurados, mas uma consultaLIMITretornará um erroDELTA_ARCHIVED_FILES_IN_LIMIT. Veja Como o Databricks realiza a amostragem para dados restaurados?
Alterar a regra de transição do gerenciamento do ciclo de vida
Se você alterar o intervalo de tempo para sua regra de transição de gerenciamento do ciclo de vida cloud , você deve atualizar a propriedade delta.timeUntilArchived para o mesmo intervalo.
Se o intervalo de tempo antes do arquivamento for encurtado (menos tempo desde a criação do arquivo), o suporte ao arquivamento para a tabela Delta Lake continuará funcionando normalmente após a atualização da propriedade da tabela.
Estenda a regra de transição do gerenciamento do ciclo de vida
Se o intervalo de tempo antes do arquivamento for estendido (para adicionar mais tempo antes que o arquivamento seja acionado), atualizar a propriedade delta.timeUntilArchived para o novo valor pode causar erros. Os provedores de nuvem não restauram automaticamente os arquivos do armazenamento arquivado quando as políticas de retenção de dados são alteradas. Isso significa que os arquivos anteriormente qualificados para arquivamento, mas agora não considerados elegíveis para arquivamento, ainda estão arquivados.
Para evitar erros, nunca defina a propriedade delta.timeUntilArchived com um valor maior que a idade real dos dados arquivados mais recentemente.
Considere um cenário em que o intervalo de tempo para arquivamento é alterado de 60 dias para 90 dias:
- Todos os registros entre 60 e 90 dias são arquivados quando a política é alterada.
- Por 30 dias, nenhum arquivo novo é arquivado (os arquivos não arquivados mais antigos têm 60 dias quando a política é estendida).
- 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 horário de criação do arquivo registrado pelo log de transações Delta. Não tem conhecimento explícito da política subjacente. Durante o período de atraso entre o antigo limite de arquivamento e o novo limite de arquivamento, você pode adotar uma destas abordagens para evitar consultar arquivos arquivados:
-
O senhor pode deixar a configuração
delta.timeUntilArchivedcom 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, o valor de outro dia de dados seria considerado arquivado pela Databricks, mas ainda precisa ser arquivado 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
delta.timeUntilArchivedpara90 days.
-
Você pode atualizar a configuração
delta.timeUntilArchivedtodos 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 arquivados muda em tempo real. Por exemplo, após 7 dias, definir
delta.timeUntilArchivedcomo67 daysreflete com precisão a idade de todos os arquivos de dados arquivados. - Essa abordagem só é necessária se você precisar acessar todos os dados em camadas ativas.
- Embora a política de nuvem esteja definida para 90 dias, a idade real dos dados arquivados muda em tempo real. Por exemplo, após 7 dias, definir
Atualizar o valor de delta.timeUntilArchived não altera quais dados são arquivados. Ele apenas altera os dados que o Databricks trata como se estivessem arquivados.