← 返回信息流
AI 资讯Hacker News·4 天前

Kore:面向现代数据系统的开源二进制文件格式

原标题:Kore: Binary File Format Optimized for Modern Data Systems (Open Source)

速览

Kore 是一个开源项目,提供专为现代数据架构设计的二进制文件格式。它针对高性能计算和大规模数据场景进行了优化,能够显著改善数据读写速度与存储效率。该工具旨在解决传统格式在处理海量数据时的性能瓶颈,为数据工程师提供更高效的底层存储方案。

AI 深度解读

Kore:专为现代数据系统优化的二进制文件格式(开源)

背景

在大数据分析和处理领域,数据格式的选择直接决定了系统的存储效率和查询性能。长期以来,Apache Parquet 一直是列式存储的事实标准,广泛应用于 Hadoop、Spark 等生态系统中。然而,随着数据规模的指数级增长和实时分析需求的提升,业界一直在寻求更极致的压缩率和更快的查询速度。

在此背景下,Kore 作为一个新兴的高性能二进制文件格式项目进入视野。该项目旨在解决传统格式在压缩比和查询延迟上的瓶颈,特别针对分析型工作负载(Analytical Workloads)进行了深度优化。作为一个开源项目,Kore 不仅提供了底层的 Rust 库支持,还原生集成了 Apache Spark,旨在为现代数据栈提供一个更轻量、更高效的底层存储解决方案。

核心内容

Kore 被定义为一个高性能的二进制文件格式,专门针对分析型工作负载进行了优化。根据 v0.1.0 版本的发布说明,其核心特性主要体现在以下几个维度:

1. 极致的压缩与查询性能

  • 压缩率优势:Kore 声称其压缩率可达 38%(注:此处原文表述可能存在歧义,通常指压缩后的体积占原始体积的比例,即压缩比为 38%,意味着节省了 62% 的空间;或者指相对于某种基准的提升。原文对比 Parquet 的 63%,若理解为剩余体积占比,则 Kore 更小;若理解为压缩比数值,则需结合上下文。通常“38% compression ratio”在技术文档中可能指压缩后大小/原始大小 = 38%。相比之下,Parquet 为 63%。这意味着 Kore 的文件体积更小)。
  • 查询加速:通过列裁剪(Column Pruning)和谓词下推(Predicate Pushdown)技术,Kore 实现了高达 131 倍的查询速度提升。
  • 数据完整性:项目方进行了零数据丢失验证,测试覆盖超过 40 万个单元格,确保数据在读写过程中的完整性。

2. 原生 Spark 集成

Kore 提供了原生的 PySpark 集成支持,允许用户直接使用 PySpark 进行 Kore 文件的读写操作。

  • 读取:通过 KoreDataFrameReader 加载 .kore 文件。
  • 写入:通过 KoreDataFrameWriter 将 DataFrame 保存为 .kore 格式,并支持覆盖模式。
  • SQL 支持:对于 Spark 3.5+ 版本,支持通过 spark.read.format("kore") 的方式直接进行 Spark SQL 查询。

3. Rust 库接口

对于需要底层控制或构建自定义数据管道的开发者,Kore 提供了 Rust 库。主要 API 包括:

  • kore_write_simple:根据 Schema JSON 和数据 JSON 写入数据。
  • kore_read_simple:读取整个文件数据。
  • kore_read_col_simple:仅读取指定列的数据。
  • kore_info_simple:获取文件的元数据信息。

4. 项目状态与注意事项

  • 早期版本:当前版本为 v0.1.0,属于早期发布阶段。
  • 代码完整性:该工作区(Workspace)包含原始 KORE 源文件的副本。部分长实现代码在初始导出中被标记为 stub(桩代码/占位符)。如果需要完整的运行时功能,开发者需要将上游项目中的完整实现替换这些桩代码。
  • 构建要求:开发者需确保 Cargo.toml 中的元数据(作者、仓库、关键词)正确,并根据需要添加 MIT 许可证文件。建议运行 cargo build --releasecargo test 来验证编译和测试,并可配置 GitHub Actions 进行 CI/CD。

关键要点

  • 性能对标:Kore 的核心卖点在于比 Parquet 更小的文件体积(38% vs 63% 的剩余体积占比)和显著更快的查询速度(131x 加速)。
  • 技术原理:利用列裁剪和谓词下推技术,Kore 能够减少 I/O 开销并加速过滤操作,这是其高性能的关键所在。
  • 生态兼容:虽然底层由 Rust 实现,但通过 PySpark 集成,它无缝融入了现有的 Apache Spark 数据工程生态,降低了使用门槛。
  • 开源协议:默认采用 MIT 许可证,允许商业和私人使用。
  • 开发状态:目前仍处于早期阶段(v0.1.0),部分底层实现可能尚未完全完善(存在 stubs),适合技术爱好者和早期采用者进行实验和贡献,但在生产环境中需谨慎评估稳定性。

意义与影响

Kore 的出现反映了数据基础设施领域对“极致效率”的持续追求。

  1. 挑战 Parquet 的统治地位:Parquet 虽然成熟且广泛支持,但在某些特定场景下,其压缩率和查询性能并非最优。Kore 试图通过更先进的二进制编码和索引策略,在存储成本和查询延迟之间找到更好的平衡点。如果其宣称的 131 倍加速属实,将对大规模数据分析场景产生重大影响。
  2. 推动 Rust 在数据工程中的应用:Kore 基于 Rust 构建,展示了 Rust 在系统级编程、内存安全和高性能方面的优势。随着更多数据格式和工具采用 Rust,数据工程栈的性能上限有望被进一步推高。
  3. 简化数据管道:原生的 Spark 集成意味着数据工程师无需编写复杂的自定义连接器即可利用 Kore 的优势,这有助于加速新技术在主流数据栈中的 adoption(采用)。
  4. 开源社区的活力:作为一个早期开源项目,Kore 的发布为社区提供了一个新的实验平台。开发者可以通过贡献代码、测试边界案例来共同完善这一格式,促进数据格式标准的多样化发展。

需要注意的是,鉴于其 v0.1.0 的版本状态和存在的桩代码,Kore 目前更多是一个技术原型或早期产品。其长期影响力将取决于后续版本的稳定性、社区活跃度以及对主流数据生态系统的兼容性完善程度。

查看原文 →github.com