Delta Lake é uma estrutura de armazenamento de código aberto que permite construir uma arquitetura Lakehouse com mecanismos de computação, incluindo Spark, PrestoDB, Flink, Trino e Hive e APIs para Scala, Java, Rust, Ruby e Python.
A seguir estão algumas das integrações mais populares do Delta Lake. Consulte delta.io/integrations para obter a lista completa:
Consulte a documentação on-line para a versão mais recente.
A biblioteca Delta Standalone é uma biblioteca Java de nó único que pode ser usada para ler e gravar em tabelas Delta. Especificamente, esta biblioteca fornece APIs para interagir com os metadados de uma tabela no log de transações, implementando o protocolo Delta Transaction Log para obter as garantias transacionais do formato Delta Lake.
Existem dois tipos de APIs fornecidas pelo projeto Delta Lake.
DataFrameReader
/ Writer
(ou seja, spark.read
, df.write
, spark.readStream
e df.writeStream
). As opções para essas APIs permanecerão estáveis em uma versão principal do Delta Lake (por exemplo, 1.xx).Delta Lake garante compatibilidade retroativa para todas as tabelas Delta Lake (ou seja, versões mais recentes do Delta Lake sempre serão capazes de ler tabelas escritas por versões mais antigas do Delta Lake). No entanto, reservamo-nos o direito de interromper a compatibilidade à medida que novos recursos são introduzidos no protocolo de transação (ou seja, uma versão mais antiga do Delta Lake pode não ser capaz de ler uma tabela produzida por uma versão mais recente).
As alterações significativas no protocolo são indicadas pelo incremento da versão mínima do leitor/gravador na ação Protocol
.
O documento Delta Transaction Log Protocol fornece uma especificação do protocolo de transação.
As garantias Delta Lake ACID baseiam-se nas garantias de atomicidade e durabilidade do sistema de armazenamento. Especificamente, exigimos que o sistema de armazenamento forneça o seguinte.
Consulte a documentação on-line sobre Configuração de armazenamento para obter detalhes.
Delta Lake garante serialização para leituras e gravações simultâneas. Consulte Controle de simultaneidade Delta Lake para obter mais detalhes.
Usamos GitHub Issues para rastrear problemas relatados pela comunidade. Você também pode entrar em contato com a comunidade para obter respostas.
Aceitamos contribuições para Delta Lake. Veja nosso CONTRIBUTING.md para mais detalhes.
Também aderimos ao Código de Conduta Delta Lake.
Delta Lake é compilado usando SBT.
Para compilar, execute
build/sbt compile
Para gerar artefatos, execute
build/sbt package
Para executar testes, execute
build/sbt test
Para executar um único conjunto de testes, execute
build/sbt spark/'testOnly org.apache.spark.sql.delta.optimize.OptimizeCompactionSQLSuite'
Para executar um único teste dentro de um único conjunto de testes, execute
build/sbt spark/'testOnly *.OptimizeCompactionSQLSuite -- -z "optimize command: on partitioned table - all partitions"'
Consulte a documentação do SBT para obter mais comandos.
IntelliJ é o IDE recomendado para uso no desenvolvimento de Delta Lake. Para importar Delta Lake como um novo projeto:
~/delta
.File
> New Project
> Project from Existing Sources...
e selecione ~/delta
.Import project from external model
selecione sbt
. Clique em Next
.Project JDK
especifique um Java 1.8
JDK válido e opte por usar o shell SBT para project reload
e builds
o projeto.Finish
.Depois de aguardar a indexação do IntelliJ, verifique sua configuração executando um conjunto de testes no IntelliJ.
DeltaLogSuite
Run 'DeltaLogSuite'
Se você vir erros no formulário
Error:(46, 28) object DeltaSqlBaseParser is not a member of package io.delta.sql.parser
import io.delta.sql.parser.DeltaSqlBaseParser._
...
Error:(91, 22) not found: type DeltaSqlBaseParser
val parser = new DeltaSqlBaseParser(tokenStream)
em seguida, siga estas etapas:
build/sbt compile
.File
> Project Structure...
> Modules
> delta-spark
.Source Folders
remova todas as pastas target
, por exemplo, target/scala-2.12/src_managed/main [generated]
Apply
e execute novamente o teste. Licença Apache 2.0, consulte LICENÇA.
Existem dois meios de comunicação na comunidade de Delta Lake.