Delta Lake 是一个开源存储框架,支持使用 Spark、PrestoDB、Flink、Trino 和 Hive 等计算引擎以及 Scala、Java、Rust、Ruby 和 Python 的 API 构建 Lakehouse 架构。
以下是一些比较流行的 Delta Lake 集成,请参阅 delta.io/integrations 以获取完整列表:
请参阅最新版本的在线文档。
Delta Standalone 库是一个单节点 Java 库,可用于读取和写入 Delta 表。具体来说,该库提供了 API 来与事务日志中表的元数据进行交互,实现 Delta 事务日志协议以实现 Delta Lake 格式的事务保证。
Delta Lake 项目提供了两种类型的 API。
DataFrameReader
/ Writer
(即spark.read
、 df.write
、 spark.readStream
和df.writeStream
)读取 Delta 表。这些 API 的选项将在 Delta Lake 的主要版本(例如 1.xx)中保持稳定。Delta Lake 保证所有 Delta Lake 表的向后兼容性(即,较新版本的 Delta Lake 将始终能够读取旧版本 Delta Lake 写入的表)。但是,我们保留随着交易协议引入新功能而中断前向兼容性的权利(即旧版本的 Delta Lake 可能无法读取新版本生成的表)。
协议中的重大更改通过增加Protocol
操作中的最低读取器/写入器版本来指示。
Delta 事务日志协议文档提供了事务协议的规范。
Delta Lake ACID 保证基于存储系统的原子性和持久性保证。具体来说,我们要求存储系统提供以下内容。
有关详细信息,请参阅有关存储配置的在线文档。
Delta Lake 确保并发读写的可串行化。请参阅 Delta Lake 并发控制了解更多详细信息。
我们使用 GitHub Issues 来跟踪社区报告的问题。您还可以联系社区以获得答案。
我们欢迎对 Delta Lake 做出贡献。请参阅我们的 CONTRIBUTING.md 了解更多详细信息。
我们还遵守 Delta Lake 行为准则。
Delta Lake 使用 SBT 编译。
编译,运行
build/sbt compile
要生成工件,请运行
build/sbt package
要执行测试,请运行
build/sbt test
要执行单个测试套件,请运行
build/sbt spark/'testOnly org.apache.spark.sql.delta.optimize.OptimizeCompactionSQLSuite'
要在单个测试套件中执行单个测试,请运行
build/sbt spark/'testOnly *.OptimizeCompactionSQLSuite -- -z "optimize command: on partitioned table - all partitions"'
有关更多命令,请参阅 SBT 文档。
IntelliJ 是开发 Delta Lake 时推荐使用的 IDE。将 Delta Lake 导入为新项目:
~/delta
中。File
> New Project
> Project from Existing Sources...
并选择~/delta
。Import project from external model
下选择sbt
。单击Next
。Project JDK
下指定有效的 Java 1.8
JDK 并选择使用 SBT shell 进行project reload
和builds
。Finish
。等待 IntelliJ 建立索引后,通过在 IntelliJ 中运行测试套件来验证您的设置。
DeltaLogSuite
Run 'DeltaLogSuite'
如果您看到以下形式的错误
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)
然后按照下列步骤操作:
build/sbt compile
。File
> Project Structure...
> Modules
> delta-spark
。Source Folders
下删除所有target
文件夹,例如target/scala-2.12/src_managed/main [generated]
Apply
,然后重新运行测试。 Apache 许可证 2.0,请参阅许可证。
Delta Lake 社区内有两种沟通媒介。