Pular para o conteúdo principal

Limitações do Delta Lake no S3

Este artigo detalha algumas das limitações que o senhor pode encontrar ao trabalhar com dados armazenados em S3 com Delta Lake em Databricks. O modelo eventualmente consistente usado em Amazon S3 pode levar a possíveis problemas quando vários sistemas ou clusters modificam dados na mesma tabela simultaneamente.

Databricks e Delta Lake suportam gravações em vários clusters por default, o que significa que as consultas que gravam em uma tabela a partir de vários clusters ao mesmo tempo não corromperão a tabela. Para tabelas Delta armazenadas em S3, essa garantia é limitada a um único Databricks workspace.

atenção

Para evitar possíveis problemas de corrupção e perda de dados, o site Databricks recomenda que o senhor não modifique a mesma tabela Delta armazenada em S3 a partir de um espaço de trabalho diferente.

Controle de versão de bucket e Delta Lake

O senhor pode usar o controle de versão do bucket S3 para fornecer redundância adicional aos dados armazenados no Delta Lake. A Databricks recomenda manter três versões e implementar uma política de gerenciamento de ciclo de vida que mantenha as versões por 7 dias ou menos para todos os buckets S3 com o controle de versão ativado.

important

Se o senhor encontrar lentidão no desempenho de tabelas armazenadas em buckets com o controle de versão ativado, indique que o controle de versão do bucket está ativado ao entrar em contato com o suporte da Databricks.

Quais são as limitações das gravações de vários clusters em S3?

Os recursos a seguir não são compatíveis com a execução nesse modo:

O senhor pode desativar as gravações de vários agrupamentos definindo spark.databricks.delta.multiClusterWrites.enabled como false. Se estiverem desativados, as gravações em uma única tabela devem se originar de um único clustering.

atenção

Desativar spark.databricks.delta.multiClusterWrites.enabled e modificar a mesma tabela Delta de vários clusters simultaneamente pode levar à perda ou à corrupção de dados.

Por que os dados do Delta Lake que excluí ainda estão armazenados no S3?

Se o senhor estiver usando o Delta Lake e tiver ativado o controle de versão do bucket no bucket S3, terá duas entidades gerenciando arquivos de tabela. A Databricks recomenda desativar o controle de versão do bucket para que o comando VACUUM possa remover efetivamente os arquivos de dados não utilizados.

Por que uma tabela mostra dados antigos depois que eu excluo os arquivos do Delta Lake com rm -rf e crio uma nova tabela no mesmo local?

As exclusões no S3 são consistentes apenas eventualmente. Assim, após a exclusão de uma tabela, as versões antigas do log de transações ainda podem ficar visíveis por algum tempo. Para evitar isso, não reutilize um caminho de tabela após excluí-lo. Em vez disso, recomendamos que você use mecanismos transacionais como DELETE FROM, overwrite e overwriteSchema para excluir e atualizar tabelas. Consulte Prática recomendada para substituir uma tabela.