Gravações transacionais no armazenamento em nuvem com o DBIO
Essa documentação foi descontinuada e pode não estar atualizada. O produto, serviço ou tecnologia mencionados neste conteúdo não são mais suportados. Consulte O que são garantias ACID em Databricks?
O pacote Databricks DBIO fornece gravações transacionais no armazenamento em nuvem para o Apache Spark Job. Isso resolve uma série de problemas de desempenho e correção que ocorrem quando o Spark é usado em uma configuração de nuvem nativa (por exemplo, gravando diretamente no serviço de armazenamento).
O protocolo commit não é respeitado quando o senhor acessa caminhos de uso de dados que terminam em *
. Por exemplo, a leitura de dbfs:/my/path
retornará somente as alterações confirmadas, enquanto a leitura de dbfs:/my/path/*
retornará o conteúdo de todos os arquivos de dados no diretório, independentemente de seu conteúdo ter sido confirmado ou não. Esse é um comportamento esperado.
Com o DBIO transacional commit, os arquivos de metadados que começam com _started_<id>
e _committed_<id>
acompanham os arquivos de dados criados pelo Spark Job. Geralmente, você não deve alterar esses arquivos diretamente. Em vez disso, o senhor deve usar o comando VACUUM
para limpá-los.
Limpe arquivos não confirmados
Para limpar os arquivos não confirmados que sobraram do Spark Job, use o comando VACUUM
para removê-los. Normalmente, VACUUM
acontece automaticamente após a conclusão do Spark trabalho, mas o senhor também pode executá-lo manualmente se um trabalho for abortado.
Por exemplo, VACUUM ... RETAIN 1 HOUR
remove arquivos não confirmados com mais de uma hora.
- Evite o site vacuum com um horizonte de menos de uma hora. Isso pode causar inconsistência nos dados.
Veja também vacuum.
- SQL
- Scala
-- recursively vacuum an output path
VACUUM '/path/to/output/directory' [RETAIN <N> HOURS]
-- vacuum all partitions of a catalog table
VACUUM tableName [RETAIN <N> HOURS]
// recursively vacuum an output path
spark.sql("VACUUM '/path/to/output/directory' [RETAIN <N> HOURS]")
// vacuum all partitions of a catalog table
spark.sql("VACUUM tableName [RETAIN <N> HOURS]")