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.
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
Databricks não recomenda habilitar o controle de versão de bucket para buckets que armazenam dados Delta Lake, incluindo tabelas gerenciais Unity Catalog. O Delta Lake implementa seu próprio controle de versão e coleta de lixo.
Quando o senhor ativa o controle de versão do bucket, o S3 retém cópias de metadados e arquivos de dados que os processos manuais e automatizados nos Databricks consideram excluídos. Isso inclui arquivos de dados que o site VACUUM
excluiria permanentemente e logs de transações limpos automaticamente durante as operações regulares da tabela Delta.
Se o senhor optar por usar o controle de versão do bucket, 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.
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:
- Criptografia do lado do servidor com chave de criptografia fornecida pelo cliente
- S3 caminhos com credenciais em um clustering que não pode acessar AWS Serviço de tokens de segurança
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.
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 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?
O senhor nunca deve usar o site rm -rf
para descartar uma tabela Delta. Consulte Soltar ou substituir uma mesa Delta.