Partilhar via


Suporte de arquivamento no Azure Databricks

Importante

Esse recurso está no Public Preview for Databricks Runtime 13.3 LTS e superior.

O suporte de arquivamento no Azure Databricks apresenta uma coleção de recursos que permitem que você use políticas de ciclo de vida baseadas em nuvem no armazenamento de objetos em nuvem contendo Delta tables.

Importante

O Azure Databricks tem suporte de arquivamento apenas para o Azure Archive. Consulte os documentos do Azure sobre como otimizar custos com o gerenciamento do ciclo de vida.

Por que você deve habilitar o suporte a arquivamento?

O suporte de arquivamento só permite consultas que podem ser respondidas corretamente sem tocar em arquivos arquivados. Estas consultas incluem as que:

  • Consultar apenas metadados.
  • Ter filtros que não exijam a verificação de nenhum arquivo arquivado.

Todas as consultas que requerem dados em arquivos arquivados falham.

Importante

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

Sem suporte a arquivamento, as operações contra o Delta tables 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íveis quando consultados. O suporte a arquivamento introduz otimizações para evitar consultar 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 de arquivamento para um table no Azure Databricks não cria nem altera as políticas de ciclo de vida definidas para seu armazenamento de objetos na nuvem. Para obter os resultados desejados, sua política de ciclo de vida na nuvem e a delta.timeUntilArchived configuração devem ser iguais.

Consultas otimizadas para dados arquivados

O suporte de arquivamento no Azure Databricks otimiza as seguintes consultas em relação ao Delta tables:

Query Novo comportamento
SELECT * FROM <table_name> LIMIT <limit> [WHERE <partition_predicate>] Ignore automaticamente os arquivos arquivados e retorne resultados de dados em um nível de armazenamento não arquivado.
Comandos de manutenção do Lago Delta: OPTIMIZE, ZORDER, ANALYZE, PURGE Ignore automaticamente os ficheiros arquivados e realize a manutenção no resto do table.
Instruções DDL e DML que substituem dados ou excluem dados, incluindo o seguinte: REPLACE TABLE, INSERT OVERWRITE, TRUNCATE TABLE, DROP TABLE Marque as entradas do log de transações para arquivos de dados arquivados de destino como excluídas.
FSCK REPAIR TABLE Ignore os arquivos arquivados e verifique apenas se há arquivos que não atingiram a política de ciclo de vida.

Consulte Limitações.

Mensagens de falha e erro antecipadas

Para consultas que devem verificar arquivos arquivados para generate 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 de computação e permitindo que os usuários se adaptem e executem novamente as consultas rapidamente.
  • As mensagens de erro informam os usuários de que uma consulta falhou porque a consulta tentou acessar arquivos arquivados.

Os utilizadores podem generate um relatório dos ficheiros que necessitam de ser restaurados usando a sintaxe SHOW ARCHIVED FILES. Consulte Mostrar ficheiros arquivados.

Importante

Se você get o erro Not enough files to satisfy LIMIT, seu table não tem linhas de dados suficientes em arquivos não arquivados para satisfazer o número de registros especificado pelo LIMIT. Diminua a LIMIT cláusula para encontrar linhas não arquivadas suficientes para atender ao .LIMIT

Habilite o suporte a arquivamento

Você habilita o suporte a arquivamento no Azure Databricks for Delta tables 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 a arquivamento efetivamente informa ao Azure Databricks para ignorar arquivos mais antigos do que o período especificado. Se você habilitar essa configuração sem having políticas de ciclo de vida set para seu armazenamento de objetos na nuvem, o Azure Databricks ainda ignorará arquivos com base nesse limite especificado, mas nenhum dado será arquivado.

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

Importante

O suporte de arquivamento depende inteiramente de ambientes de computação compatíveis do Azure Databricks e só funciona para Delta tables. 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 inferiores.

Mostrar ficheiros 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 ];

Esta operação retorna URIs para arquivos arquivados como um Spark DataFrame. Restore os arquivos arquivados necessários, seguindo instruções documentadas do seu fornecedor de armazenamento de objetos. Para obter informações sobre como o Azure Databricks verifica se há dados restaurados, consulte Como o Azure Databricks faz um exemplo de dados restaurados?.

Nota

Durante esta operação, o Delta Lake só tem acesso às estatísticas de dados contidas no log de transações. Por padrão, as estatísticas recolhidas nos primeiros 32 columns no tablesão:

  • Mínimo values
  • Máximo values
  • Contagens nulas
  • Número total de registos

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

Update ou excluir dados arquivados

A operação falhará se você executar uma MERGEoperação , UPDATEou DELETE que afete os dados em arquivos arquivados. Você deve restore dados para 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 você deve restore.

Como o Azure Databricks faz um exemplo para dados restaurados?

Quando o Azure Databricks prepara uma verificação em um table com suporte a arquivamento habilitado, ele faz uma amostra 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 amostra presumivelmente arquivados foram restaurados, o Azure Databricks assumirá que todos os arquivos da consulta foram restaurados e os processos de consulta.

Limitações

As seguintes limitações existem:

  • Não há suporte para políticas de gerenciamento do ciclo de vida que não se baseiam no tempo de criação do arquivo. Isso inclui políticas baseadas em tempo de acesso e políticas baseadas em tags.
  • Não é possível usar DROP COLUMN em um table com arquivos arquivados.
  • REORG TABLE APPLY PURGE faz uma tentativa de melhor esforço, mas só funciona em arquivos vetoriais de exclusão e arquivos de dados referenciados que não são arquivados. PURGE Não é possível 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.

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 na nuvem, deverá update 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 o table Delta continuará funcionando normalmente depois que a propriedade table for atualizada.

Estender 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 levar a erros. A nuvem providers não restore automaticamente arquivos do armazenamento em arquivo quando as políticas de retenção de dados são alteradas. Isso significa que os arquivos anteriormente elegíveis para arquivamento, mas agora não considerados elegíveis para arquivamento, ainda são arquivados.

Importante

Para evitar erros, nunca set a propriedade delta.timeUntilArchived a um valor maior do 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:

  1. Todos os registros entre 60 e 90 dias são arquivados quando a política é alterada.
  2. Durante 30 dias, nenhum novo ficheiro é arquivado (os ficheiros não arquivados mais antigos têm 60 dias quando a política é prorrogada).
  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 set em relação ao tempo 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 limite de arquivamento antigo e o novo limite de arquivamento, você pode adotar uma das seguintes abordagens para evitar consultar 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, os 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, update o delta.timeUntilArchived para 90 days.
  2. Você pode update 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 seja de set a 90 dias, a idade real dos dados arquivados muda em tempo real. Por exemplo, após 7 dias, a configuração delta.timeUntilArchived para 67 days refletir 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 quentes.

Nota

A atualização do valor para delta.timeUntilArchived não altera quais dados são arquivados. Ele altera apenas quais dados o Azure Databricks trata como se fossem arquivados.