近日,Apache软件基金会(全球最具影响力的开源软件组织之一)顶级项目Apache Iceberg正式发布了其C++实现的0.1.0版本,补齐了开放湖仓(Open Lakehouse)生态在原生高性能计算领域的关键一环,这一发布将影响全球数据生态,来自中国的数据平台企业云器科技在其中扮演了重要角色。据官方发布信息,云器科技研发团队为此版本贡献了超过70%的代码,并主导解决了跨语言兼容性、C++依赖管理等一系列复杂技术挑战。
AI应用浪潮下,海量数据集的管理被持续挑战。Apache Iceberg凭借性能、可靠、简洁的优势已成为开放湖仓(Open Lakehouse)架构的事实标准,为海量数据集的管理带来了革命性的变革。这一生态系统虽繁荣,却始终面临一个关键缺口——原生 C++实现的缺失。C++ 是全球众多顶级数据引擎(ClickHouse, Doris, DuckDB, StarRocks)、AI 框架(TensorFlow, PyTorch)和高性能计算应用的心脏。缺少原生支持,意味着它们在接入Apache Iceberg 时,要么忍受 JNI (Java Native Interface) 调用带来的性能瓶颈,要么被迫投入巨大精力做重复工作,这也是横亘在开放湖仓与极致性能之间的巨大障碍。
Apache Iceberg C++ 0.1.0版本的发布,标志Open Lakehouse 的原生高性能时代开启。
不止于“新”:Apache Iceberg C++的战略价值与深远意义
这不仅仅是一个新语言的实现,更是打通 Open Lakehouse 高性能“最后一公里”的关键一步。
它的战略价值体现在三个核心层面:
一、为高性能引擎彻底“松绑”,从主流的开源分析引擎 ClickHouse、Apache Doris、StarRocks,到DuckDB、Apache Impala,再到海外商业化数据引擎 Snowflake、Databricks Photon 和 Google BigQuery,它们的底层都由 C++构建。原生 C++实现意味着这些系统可以有更好的性能更低的损耗,与Apache Iceberg无缝集成,将数据湖的灵活性与原生引擎的极致性能完美结合,释放其全部潜力。
二、统一数据基石,加速上层创新,随着 C++ 版本的落地,Apache Iceberg 正式完成了对 Java、Python、Rust、Go 及 C++等主流技术栈的全覆盖。一个在全语言生态中通行无阻的统一数据基座,将极大降低企业因技术栈不同而导致的数据孤岛风险。开发者可以更自由地选择最适合业务的工具,而不必为数据格式的兼容性所束缚,从而极大加速上层应用的创新迭代。
三、推动 Open Lakehouse 迈向更广阔的场景,如果说Java实现奠定了Apache Iceberg在大数据 BI 和数仓领域的基础,那么 C++原生实现就是Apache Iceberg 进军更广阔、更严苛场景的“黄金门票”。无论是对延迟极度敏感的 AI/ML 模型训练与服务、金融量化交易,还是实时分析与高性能计算,原生 C++ 带来的极致性能将为 Open Lakehouse 在这些前沿领域的普及扫清最后的障碍。
从 0 到 1:云器科技破解三大“硬核”挑战,贡献超70%代码
构建一个高质量的 C++实现,远非代码的简单移植。在此过程中,云器科技凭借深厚的技术功底、对生态的深刻洞察以及面对复杂难题的架构智慧,主导解决了三大“硬核”挑战。
挑战一:跨语言的“一致性”鸿沟,如何确保 C++实现的每一个行为都与社区公认的Java 参考实现100% 兼容?这是保证生态统一性的基石。云器团队为此设计并构建了一套全面的跨语言兼容性测试框架,直接与 Apache Spark 生成的Apache Iceberg 文件进行比对验证,从根本上保证了元数据模型、序列化格式和 API 行为的精准对齐;
挑战二:C++ 的“依赖管理”难题,如何让一个基础库既能“开箱即用”,又能灵活地嵌入到不同引擎复杂的依赖环境中?为了解决这个难题,项目创造性地采用了“核心库 (Core) + 捆绑库 (Bundle)”双层架构:
核心库:极致轻量,仅包含必要的头文件依赖(如 nanoarrow),不强加任何具体的 I/O 或文件格式实现。这使得任何引擎都可以轻松集成,并插入自身高度优化的模块。
捆绑库:内置了 Apache Arrow C++ 和 Avro C++ 实现,提供了“开箱即用”的全功能体验,大大降低了用户的接入门槛与开发成本,加速从原型到生产的路径。
这种设计,是深刻理解 C++ 生态复杂性的最佳体现。更值一提的是,云器科技还积极向上游社区 Apache Avro C++ 贡献了超过 20 个commits,修复了包括 CMake 支持、JSON 序列化、元数据读写在内的大量关键问题,并帮助其移除了对庞大的 Boost 库的依赖,展现了卓越的开源精神。
挑战三:打造地道且高效的 C++ API 为了设计出既符合 C++ 开发者习惯,又能与各种引擎高效交换数据的接口,项目选择采用 Arrow C Data Interface 作为数据交换的“通用语言”。通过仅依赖头文件库nanoarrow,核心库在保持极致轻量的同时,确保了与 Arrow 全球生态的无缝对接。
在 Apache Iceberg C++ 首个版本的构建过程中,云器科技团队10位工程师为 0.1.0版本贡献了超过 70% 的代码,为项目的核心架构与基础代码实现提供了主要的推动力。这项巨大的投入,缘于云器对开源标准和 “The Apache Way” 理念的信奉。云器团队认为,一个开放、协作、繁荣的社区是确保一项基础技术拥有长期生命力的基石。相比构建一个私有的、封闭的实现,将核心能力贡献给 Apache 社区,与全球开发者共同建设一个强大的生态,最终将使包括云器在内的所有社区参与者受益。
未来已来,蓝图初现。云器认为,Apache Iceberg C++ 0.1.0 的发布不是终点,而是新纪元的开场哨。云器科技已承诺将持续投入专职工程师,深度参与并推动Apache Iceberg C++ 后续路线图的演进,致力于与社区伙伴一起,将该项目打造成一个成熟、稳定、世界级的原生开源库。