delta
扩展增加了对 Delta Lake 开源存储格式 的支持。它是使用 Delta Kernel 构建的。该扩展提供了对本地和远程 Delta 表的 读取支持。
有关实现细节,请参阅公告博客文章。
警告
delta
扩展目前处于实验阶段,并且仅在特定平台上受支持。
Installing and Loading
delta
扩展将在首次使用时从官方扩展仓库中自动加载。如果您希望手动安装并加载它,请运行:
INSTALL delta;
LOAD delta;
Usage
要扫描本地Delta表,请运行:
SELECT *
FROM delta_scan('file:///some/path/on/local/machine');
从S3存储桶读取
要扫描S3存储桶中的Delta表,请运行:
SELECT *
FROM delta_scan('s3://some/delta/table');
为了验证S3存储桶,DuckDB Secrets 支持:
CREATE SECRET (
TYPE S3,
PROVIDER CREDENTIAL_CHAIN
);
SELECT *
FROM delta_scan('s3://some/delta/table/with/auth');
要扫描S3上的公共存储桶,您可能需要通过创建一个包含公共S3存储桶区域的密钥来传递正确的区域:
CREATE SECRET (
TYPE S3,
REGION 'my-region'
);
SELECT *
FROM delta_scan('s3://some/public/table/in/my-region');
从Azure Blob存储读取
要在Azure Blob Storage 存储桶中扫描 Delta 表,请运行:
SELECT *
FROM delta_scan('az://my-container/my-table');
为了验证到Azure Blob存储,DuckDB Secrets 是支持的:
CREATE SECRET (
TYPE AZURE,
PROVIDER CREDENTIAL_CHAIN
);
SELECT *
FROM delta_scan('az://my-container/my-table-with-auth');
特性
虽然delta
扩展仍然是实验性的,但许多(扫描)功能和优化已经得到支持:
- 多线程扫描和Parquet元数据读取
- 数据跳过/过滤下推
- 跳过文件中的行组(基于Parquet元数据)
- 跳过整个文件(基于Delta分区信息)
- 投影下推
- 扫描带有删除向量的表
- 所有基本类型
- 结构体
- 支持带有密钥的S3
未来将发布更多优化。
支持的 DuckDB 版本和平台
delta
扩展需要 DuckDB 版本 0.10.3 或更高版本。
delta
扩展目前仅支持以下平台:
- Linux AMD64 (x86_64 和 ARM64):
linux_amd64
,linux_amd64_gcc4
, 和linux_arm64
- macOS Intel 和 Apple Silicon:
osx_amd64
和osx_arm64
- Windows AMD64:
windows_amd64
支持其他DuckDB平台的工作正在进行中。