Delta Kernel
Delta Kernel项目是一组库(Java和Rust),用于构建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。