Suporte de arquivamento no Databricks
Visualização
Esse recurso está em Public Preview para Databricks Runtime 13.3 LTS e acima.
O suporte de arquivamento no Databricks apresenta uma coleção de recursos que permitem que você use políticas de ciclo de vida baseadas em cloudno armazenamento de objetos em cloud contendo tabelas Delta.
Importante
A Databricks tem suporte de arquivamento apenas para o S3 Glacier Deep Archive e o Glacier Flexible Retrieval. Consulte os documentos 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 Amazon S3 Intelligent-Tiering arquiva com base no tempo de acesso e não no tempo de criação do arquivo e não é compatível com o suporte de arquivamento no Databricks.
Por que o senhor deve ativar o suporte de arquivamento?
O suporte a arquivamento só permite consultas que podem ser respondidas corretamente sem tocar nos arquivos arquivados. Essas consultas incluem aquelas que:
Consultar apenas metadados.
Ter filtros que não exijam a varredura de nenhum arquivo arquivado.
Todas as consultas que exigem dados em arquivos arquivados falham.
Importante
O Databricks nunca retorna resultados para consultas que exigem arquivos arquivados para retornar o resultado correto.
Sem o suporte de arquivamento, as operações com tabelas Delta podem ser interrompidas porque os arquivos de dados ou de log de transações foram movidos para locais arquivados e não estão disponíveis quando consultados. O suporte a arquivamento introduz otimizações para evitar a consulta de dados arquivados quando possível. Ele também adiciona uma nova sintaxe para identificar os arquivos que devem ser restaurados do armazenamento de arquivo para concluir as consultas.
A ativação do suporte de arquivamento para uma tabela em Databricks não cria nem altera as políticas de ciclo de vida definidas para o armazenamento de objetos em cloud. Para obter os resultados desejados, a política de ciclo de vida do site cloud e a configuração delta.timeUntilArchived
devem ser iguais.
query otimizada para dados arquivados
O suporte de arquivamento no Databricks otimiza a seguinte query em tabelas Delta:
query |
Novo comportamento |
---|---|
|
Ignore automaticamente os arquivos arquivados e retorne os resultados dos dados em uma camada de armazenamento não arquivada. |
Comando de manutenção do Delta Lake: |
Ignorar automaticamente os arquivos arquivados e executar a manutenção no restante da tabela. |
DDL e instruções DML que substituem dados ou excluem dados, incluindo o seguinte: |
Marque as entradas logs de transação para arquivos de dados arquivados de destino como excluídos. |
|
Ignore os arquivos arquivados e verifique apenas os arquivos que não atingiram a política de ciclo de vida. |
Consulte Limitações.
Falha antecipada e mensagens de erro
Para query que devem verificar arquivos arquivados para gerar resultados corretos, configurar o suporte de arquivamento para Delta Lake garante o seguinte:
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 query falhou porque a query 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 receber o erro Not enough files to satisfy LIMIT
, a tabela não tem linhas de dados suficientes em arquivos não arquivados para satisfazer o número de registros especificado por LIMIT
. Diminua a cláusula LIMIT
para encontrar linhas não arquivadas suficientes para atender ao LIMIT
especificado.
Ativar suporte de arquivamento
Você habilita o suporte de arquivamento em Databricks para tabelas Delta especificando manualmente o intervalo de arquivamento configurado na política de gerenciamento do ciclo de vida cloud subjacente, como na seguinte sintaxe de exemplo:
ALTER TABLE <table_name> SET TBLPROPERTIES(delta.timeUntilArchived = 'X days');
A ativação do suporte de arquivamento efetivamente diz ao Databricks para ignorar os arquivos mais antigos do que o período especificado. Se o senhor ativar essa configuração sem ter políticas de ciclo de vida definidas para o armazenamento de objetos cloud, o Databricks ainda ignorará os arquivos com base nesse limite especificado, mas nenhum dado será arquivado.
Delta Lake não interage diretamente com as políticas de gerenciamento de ciclo de vida configuradas no site cloud account. Se o senhor atualizar a política na sua tabela cloud account, 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 de arquivamento depende inteiramente de ambientes compatíveis com Databricks compute 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 OSS Delta Lake ou Databricks Runtime 12.2 LTS e abaixo.
Mostrar arquivos arquivados
Para identificar os 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 ];
Esta operação retorna URIs para arquivos arquivados como Spark DataFrame. Restaure os arquivos arquivados necessários seguindo as instruções documentadas do seu provedor de armazenamento de objetos. Para obter informações sobre como o site Databricks verifica os dados restaurados, consulte How does Databricks sample for restored data?
Observação
Durante essas operações, o site Delta Lake só tem acesso às estatísticas de dados contidas na transação log. Em default, estas são as seguintes 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 atendem a 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.
Atualizar ou excluir dados arquivados
As operações falharão se o senhor executar MERGE
, UPDATE
ou DELETE
operações que afetem os dados em arquivos arquivados. O senhor deve restaurar os dados em uma camada de armazenamento que ofereça suporte à recuperação rápida para executar essas operações. Use SHOW ARCHIVED FILES
para determinar os arquivos que o senhor deve restaurar.
Como a Databricks faz a amostragem dos dados restaurados?
Quando o Databricks prepara uma varredura em uma tabela com suporte de arquivamento ativado, ele coleta amostras 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 da amostra supostamente arquivados foram restaurados, o Databricks presumirá que todos os arquivos da consulta foram restaurados e a consulta será processada.
Limitações
Existem as seguintes limitações:
Não existe 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 tags.
Você não pode usar
DROP COLUMN
em uma tabela com arquivos arquivados.REORG TABLE APPLY PURGE
faz a melhor tentativa possível, mas só funciona em arquivos de vetor de exclusão e arquivos de dados referenciados que não estão arquivados.PURGE
não pode excluir arquivos de vetores de exclusão arquivados.Estender a regra de transição de gerenciamento de ciclo de vida resulta em comportamento inesperado. Consulte Estender a regra de transição de gerenciamento do ciclo de vida.
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 , 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 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), a atualização da propriedade delta.timeUntilArchived
para o novo valor pode levar a 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 elegíveis para arquivamento, mas que agora não são considerados elegíveis para arquivamento, ainda são arquivados.
Importante
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 mais antigos não arquivados 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 tempo de criação do arquivo registrado pelos logs de transação Delta. Ele 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 seguir uma das seguintes abordagens para evitar a consulta de arquivos arquivados:
O senhor 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, o valor de outro dia de dados seria considerado arquivado por Databricks, mas ainda precisa ser arquivado pelo provedor cloud. 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
para90 days
.
Você pode atualizar a configuração
delta.timeUntilArchived
todos os dias para refletir o intervalo atual durante o período de atraso.Embora a política do cloud esteja definida para 90 dias, a idade real dos dados arquivados muda no tempo real. Por exemplo, após 7 dias, a configuração de
delta.timeUntilArchived
para67 days
reflete com precisão a idade de todos os arquivos de dados arquivados.Essa abordagem só é necessária se o senhor precisar acessar todos os dados em camadas quentes.
Observação
A atualização do 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.