Parquet文件写入支持、布隆过滤器、性能提升:Hardwood 1.1.0.Beta1发布

Parquet文件写入支持、布隆过滤器、性能提升:Hardwood 1.1.0.Beta1发布

💡 原文英文,约1700词,阅读约需7分钟。
📝

内容提要

Hardwood 1.1 Beta1发布,首次支持Parquet写入,提供RowWriter和ColumnWriter两种API,并优化查询层(Bloom过滤器、字典行组剪枝)及性能(固定长度列表快速路径等)。CLI改用Æsh框架,启动更快,新增AI代理技能和WebAssembly实验版本。此版本修复109个问题,兼容DuckDB和parquet-java,未来将完善写入功能。

🔎

延伸解读

写入支持的意义与现状

Hardwood 1.1 Beta1首次引入Parquet写入支持,标志着从纯读取库向完整读写库的转变。目前提供RowWriter和ColumnWriter两种API,分别适用于复杂嵌套模式和批量高性能场景。但需注意,当前写入实现是单线程的,且暂不支持直接写入S3,这些限制将在后续版本中逐步解决。

查询性能优化:布隆过滤器与字典剪枝

本次更新增强了谓词下推能力,新增布隆过滤器和基于字典的行组剪枝。布隆过滤器能快速判断某个值是否不存在,从而跳过不相关的行组,特别适合高基数列的等值查询。字典剪枝则利用字典编码的特性,当搜索键不在字典中时直接忽略整个行组,进一步减少数据扫描量。

CLI与生态兼容性

CLI框架从Quarkus和picocli迁移到更轻量的Æsh,启动速度显著提升,例如检查628MB文件仅需约12.8毫秒,适合在AWS Lambda等按使用计费的环境中使用。此外,写入的文件已通过DuckDB和parquet-java的兼容性测试,确保与Parquet生态系统的互操作性。

Q&A

Hardwood 1.1.0.Beta1 的主要新功能是什么?

Hardwood 1.1.0.Beta1 首次引入了 Parquet 文件写入支持,提供了 RowWriter 和 ColumnWriter 两种 API,并增强了查询层(支持布隆过滤器和基于字典的行组剪枝),同时带来了多项性能优化,如固定长度列表的快速路径。此外,CLI 改用 Æsh 框架,启动更快,并新增了 AI 代理技能和 WebAssembly 实验版本。

Hardwood 1.1.0.Beta1 的写入 API 有哪两种?它们分别适用于什么场景?

Hardwood 1.1.0.Beta1 提供了两种写入 API:RowWriter(基于记录)和 ColumnWriter(基于批量列)。RowWriter 适合写入具有复杂 schema(如包含结构体、列表、映射)的文件,而 ColumnWriter 面向性能敏感的场景,例如在压缩例程中重写大量文件。

Hardwood 1.1.0.Beta1 在查询性能方面有哪些改进?

查询性能改进包括:支持布隆过滤器,用于快速跳过不包含查询键的行组;基于字典的行组剪枝,当列块全部字典编码且字典中不包含查询键时跳过该行组;当统计信息证明行组内所有值都匹配时,无需逐值评估;以及不获取未过滤扫描的列索引。

Hardwood 1.1.0.Beta1 的写入功能目前有哪些限制?

目前写入功能是单线程的(与读取 API 不同),并且尚不支持直接写入 S3。此外,计划在未来版本中支持页面索引、布隆过滤器写入和 VARIANT 列。

Hardwood CLI 在 1.1.0.Beta1 中有哪些变化?

CLI 从 Quarkus 和 picocli 框架迁移到了更轻量的 Æsh 框架,启动速度显著提升(例如,对 628 MB 的 Overture Maps 文件执行 hardwood info 仅需约 12.8 毫秒)。此外,改进了 BYTE_ARRAY 列的值渲染,统一了 CSV 和 JSON 输出中 null 值的处理,并在 TUI 中增加了大小统计和 rep/def 级别分布显示。

Hardwood 1.1.0.Beta1 的 WebAssembly 版本有什么特点?

WebAssembly 版本是实验性的,通过 GraalVM 的 Web Image 将 CLI 编译为约 10 MB 的 WASM 包,允许在浏览器中直接加载和检查 Parquet 文件,文件不会离开本地。但该版本是单线程的,不支持所有压缩编解码器,且存在其他简化,不适合生产环境。

Hardwood 1.1.0.Beta1 如何确保写入的 Parquet 文件兼容性?

Hardwood 的写入 API 不仅针对自身的读取器进行了测试,还针对 DuckDB 和 Apache parquet-java 项目进行了测试,以确保生成的文件与更广泛的 Parquet 生态系统兼容。

Hardwood 1.1.0.Beta1 修复了多少个问题?

此版本解决了 109 个问题,是 Hardwood 迄今为止最大的发布。

🏷️

标签

➡️

继续阅读