Limitações do Delta Lake no S3
O Delta Lake no Databricks apresenta limitações específicas ao armazenar tabelas no Amazon S3, incluindo restrições de versionamento de buckets, restrições de gravação em vários clusters e riscos decorrentes da exclusão direta de arquivos.
Controle de versão de bucket e Delta Lake
A Databricks recomenda que você não ative o versionamento de buckets para buckets que armazenam dados do Delta Lake, incluindo tabelas gerenciadas pelo Unity Catalog. O Delta Lake implementa seu próprio sistema de versionamento e coleta de lixo.
Ao ativar o versionamento de buckets, o S3 retém cópias de metadados e arquivos de dados que os processos manuais e automatizados do Databricks consideram excluídos. Isso inclui arquivos de dados que VACUUM excluiria permanentemente e logs de transação limpos automaticamente durante as operações regulares da tabela Delta Lake.
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 você notar lentidão no desempenho de tabelas armazenadas em buckets com versionamento ativado, mencione que o versionamento de buckets está ativado ao entrar em contato com o suporte do Databricks.
Limitações de gravação em vários clusters
Para evitar possíveis problemas de corrupção e perda de dados, o Databricks recomenda que você não modifique a mesma tabela Delta Lake armazenada no S3 de diferentes workspaces.
O modelo de consistência eventual usado no Amazon S3 pode levar a problemas potenciais quando vários sistemas ou clusters modificam dados na mesma tabela simultaneamente.
Databricks e Delta Lake suportam gravações multi-clusters por default, o que significa que consultas gravando em uma tabela a partir de múltiplos clusters ao mesmo tempo não corromperão a tabela. Para tabelas Delta Lake armazenadas no S3, esta garantia é limitada a um único workspace do Databricks.
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
Você pode desativar as gravações em vários clusters definindo spark.databricks.delta.multiClusterWrites.enabled como false. Se estiverem desativados, as gravações em uma única tabela devem originar-se de um único cluster.
Desativar spark.databricks.delta.multiClusterWrites.enabled e modificar a mesma tabela Delta Lake de vários clusters simultaneamente pode causar perda ou corrupção de dados.
Para obter mais informações sobre gravações em vários clusters no Databricks, consulte Configurar as definições relacionadas ao serviço de commit do Databricks S3.
Dados obsoletos após a exclusão de arquivos com rm -rf
Não use rm -rf para excluir uma tabela do Delta Lake. Consulte Soltar ou substituir uma tabela.