Delta Kernel

Delta Kernel项目是一组库(JavaRust),用于构建Delta连接器,这些连接器可以读写Delta表,而无需理解Delta协议细节

您可以使用该库执行以下操作:

  • 在单个进程的单个线程中读取小型Delta表的数据。

  • 在单个进程中使用多线程从大型Delta表中读取数据。

  • 为分布式处理引擎构建一个复杂的连接器,并读取非常大的Delta表。

  • 将数据插入Delta表,可以来自单个进程或复杂的分布式引擎。

这是一个带有过滤器的简单表扫描示例:

Engine myEngine = DefaultEngine.create() ;                  // define a engine (more details below)
Table myTable = Table.forPath("/delta/table/path");         // define what table to scan
Snapshot mySnapshot = myTable.getLatestSnapshot(myEngine);  // define which version of table to scan
Scan myScan = mySnapshot.getScanBuilder(myEngine)           // specify the scan details
  .withFilters(myEngine, scanFilter)
  .build();
CloseableIterator<ColumnarBatch> physicalData =             // read the Parquet data files
  .. read from Parquet data files ...
Scan.transformPhysicalData(...)                             // returns the table data

上述示例程序的完整版本以及更多从Delta表读写数据的示例可在此处here获取。

请注意,构建连接器有两组公共API。

  • 表API - 如`Table``Snapshot`等接口,允许您读取(很快也将支持写入)Delta表

  • 引擎API - `Engine`接口允许您插入连接器特定的优化到Kernel中的计算密集型组件。例如,Delta Kernel通过DefaultEngine提供了一个默认的Parquet文件读取器,但您可以选择用自定义的Engine实现替换该默认值,该实现为您的连接器/处理引擎提供了更快的Parquet读取器。

Kernel Java

Java Kernel 是一套用于在 Java 中构建 Delta 连接器的库。更多信息请参阅 Kernel Java

内核 Rust

Rust Kernel 是一组用于以原生语言构建 Delta 连接器的库。更多信息请参阅 Kernel Rust

更多信息

  • Talk 解释Kernel背后的设计理念和API设计(幻灯片可在此here获取,这些幻灯片会随着变更保持更新)。

  • 用户指南详细介绍了如何在独立Java程序或分布式处理连接器中使用Kernel来读写Delta表。

  • 示例 Java programs 展示如何使用Kernel API读写Delta表。

  • 表和默认引擎API Java 文档

  • 迁移指南