Hardwood Promises High-Speed JVM Apache Parquet Processing with Zero Mandatory Dependencies

TL;DR · AI 摘要
Hardwood Promises High-Speed JVM Apache Parquet Processing with Zero Mandatory Dependencies - InfoQ InfoQ Homepage News...
核心要点
- 主题聚焦:Hardwood Promises High-Speed JVM Apache Parquet
- 来源:InfoQ,建议结合原文判断细节。
- AI 分析暂不可用,本条为保底评分与摘要。
Hardwood 承诺实现无强制依赖的高速 JVM Apache Parquet 处理 - InfoQ
InfoQ 首页 News Hardwood 承诺实现无强制依赖的高速 JVM Apache Parquet 处理
Java
InfoQ AI 工程师认证(7月25日):AI 演示已成功运行。现在你需要让它变得可靠。
Hardwood 承诺实现无强制依赖的高速 JVM Apache Parquet 处理
2026年7月3日 3分钟阅读
by
- Olimpiu Pop
#### 关注我们
Youtube
232K 粉丝
26K 粉丝
新
RSS
19K 读者
X
57.1k 粉丝
21K 喜欢
Bluesky
收听本文 -
0:00
音频准备就绪
您的浏览器不支持音频元素。
正常
1.25x
1.5x
喜欢
新下拉阅读列表
- 阅读列表
Hardwood 作为一款开源库发布,旨在优化 JVM 环境中 Apache Parquet 文件的读取性能。由 Gunnar Morling 发起,它旨在提供比传统 Apache Parquet Java 实现更快、更简单的替代方案,后者通常会引入显著的依赖开销并基于单线程核心读取器运行。Hardwood 通过提供几乎零依赖的替代方案来解决这些限制,该方案利用多线程页面解码以最大化 CPU 利用率。自 2026 年初诞生以来,经过五个月的发展,现已发布 1.0 版本,目前提供读取功能,计划在未来的版本中增加写入支持。
Hardwood 的设计强调数据访问的模块化方法。它提供两种不同的 API 以满足不同的工程需求:一个结构化行读取器 API 用于通用记录访问,另一个面向批量的列读取器 API 专为高吞吐量分析工作负载设计。与传统按顺序处理数据的实现不同,Hardwood 将 Parquet 页面解码分布到所有可用的 CPU 核心,从而减少串行处理页面时通常关联的延迟。
行读取器代码:
try (ParquetFileReader fileReader = ParquetFileReader.open(
InputFile.of(path));
RowReader rowReader = fileReader.rowReader()) {
while (rowReader.hasNext()) {
rowReader.next();
long id = rowReader.getLong("id");
String name = rowReader.getString("name");
LocalDate birthDate = rowReader.getDate("birth_date");
Instant createdAt = rowReader.getTimestamp("created_at");
}
}该库采用零强制依赖配置文件设计,以最小化供应链攻击和类路径冲突的风险。为实现这一点,它利用自 Java 9 版本以来可用的最小日志抽象,有效避免了外部日志依赖。其他功能(如对 LZ4 和 GZip 等特定压缩算法或 S3 等对象存储服务的支持)则通过可选依赖项提供,用户可根据需要自行引入。
它还实现了优化的谓词评估。通过在过滤扫描期间采用无分支、批量处理的评估方式,系统最小化了 CPU 分支预测错误,这在现代分析数据处理中是影响性能的关键因素。
除了库本身,该项目还包含一个专为开发人员和数据工程师设计的命令行界面(CLI)工具。该CLI提供交互式的基于文本的用户界面(TUI),允许用户在不编写样板代码或使用重型数据处理框架的情况下,检查Parquet文件的模式和元数据。该工具在开发周期中作为诊断工具,用于验证文件完整性和结构。
基准测试结果表明,Hardwood相比标准实现实现了显著的吞吐量提升。在使用8个vCPU扫描扁平数据集时,读取器达到了每秒1650万行的吞吐量。性能优势主要归功于库能够根据可用硬件进行扩展。在单线程配置下,性能受顺序解码的限制;然而,多线程方法使系统能够更有效地利用主机的I/O和CPU带宽。通过模块化设计、高性能、多线程解码以及简化依赖管理的零强制依赖配置文件,Hardwood为JVM环境提供了显著的优势。
除了发起者Gunnar Morling之外,该项目已经吸引了20位开源贡献者,其中包括来自Java领域的资深贡献者,如Andres Almiray和Bruno Borges。更广泛社区的总体反馈基本积极,潜在用户还要求增加Parquet写入功能。这一增强功能已经包含在即将发布的路线图中,预计很快将可用。
Hardwood 1.0标志着高性能JVM数据处理的重要里程碑,该项目仅用五个月时间就从构想进展到首个稳定版本。开发过程中使用了AI辅助编码,但设计和代码审查流程仍由人类主导。通过提供零依赖架构和创新的多线程解码引擎,该项目为传统Parquet实现提供了一个轻量级但功能强大的替代方案。凭借模块化设计和明确的未来写入支持路线图,Hardwood有望成为数据工程师在分析工作负载中最大化资源效率的基础工具。
作者部分主容器
关于作者
章节标题
每位作者的主容器
#### Olimpiu Pop
显示更多
显示更少
#### 此内容属于Java主题
##### 相关主题:
- 开发
- AI、机器学习与数据工程
- 大数据
- Apache Parquet
- Java
- 相关编辑
- 相关赞助商
- 相关赞助商 2026年8月6日,东部时间下午1点 构建高风险事件响应的AI代理评估 由:Brianne Bujnowski - Datadog AI产品营销经理,Benjamin Barton - Datadog高级软件工程师
InfoQ新闻通讯
每周五发送上周InfoQ内容的摘要。加入超过25万名高级开发者的社区。查看示例
我们保护您的隐私。 /think