28次重大版本更新

52.2.0 2024年7月28日
52.0.0 2024年6月6日
51.0.0 2024年3月18日
50.0.0 2024年1月12日
24.0.0 2022年10月3日

#251算法

Download history 180732/week @ 2024-04-19 173153/week @ 2024-04-26 168131/week @ 2024-05-03 197948/week @ 2024-05-10 182666/week @ 2024-05-17 176311/week @ 2024-05-24 257021/week @ 2024-05-31 292537/week @ 2024-06-07 249427/week @ 2024-06-14 303965/week @ 2024-06-21 294571/week @ 2024-06-28 285550/week @ 2024-07-05 284724/week @ 2024-07-12 290488/week @ 2024-07-19 304729/week @ 2024-07-26 303789/week @ 2024-08-02

1,239,590 每月下载量
357 个crate中使用 (直接使用27个)

Apache-2.0

755KB
15K SLoC

Apache Arrow和Apache Parquet的本地Rust实现

Coverage Status

欢迎使用Apache Arrow的Rust实现,Apache Arrow是一种流行的内存列式格式。

此仓库包含以下主要组件

crate 描述 最新API文档 README
arrow 核心功能(内存布局、数组、底层计算) docs.rs (README)
arrow-flight 支持Arrow-Flight IPC协议 docs.rs (README)
object-store 支持对象存储交互(aws、azure、gcp、本地、内存) docs.rs (README)
parquet 支持Parquet列式文件格式 docs.rs (README)
parquet_derive 一个crate,用于为任意简单结构体推导RecordWriter/RecordReader docs.rs (README)

在此仓库中,当前的开发版本API文档可以在这里找到。

版本发布和计划

arrowparquet crate

Arrow Rust项目大约每月发布一次,遵循语义版本控制

由于维护者和测试带宽有限,arrow crate(arrowarrow-flight等)将与parquetparquet-derive crate具有相同的版本和发布计划。

从2024年6月开始,我们计划每个季度最多发布一次带有可能破坏API变更的新主要版本,并在间隔月份发布增量次要版本。有关更多详细信息,请参阅此工单

为了降低我们的维护负担,我们定期从master分支发布(主要和次要)版本。我们如何处理具有破坏性API变更的PR在贡献指南中有描述。

例如

大约日期 版本 备注
2024年6月 52.0.0 主要版本,可能包含破坏性API变更
2024年7月 52.1.0 次要版本,无破坏性API变更
2024年8月 52.2.0 次要版本,无破坏性API变更
2024年9月 53.0.0 主要版本,可能包含破坏性API变更

object_store

object_store包独立于arrowparquet包发布,并遵循语义化版本控制。我们旨在大约每两个月发布新版本。

在不同存储库中有几个相关的包

crate 描述 文档
datafusion 支持SQL的内存查询引擎 (README)
ballista 分布式查询执行 (README)
object_store_opendal 使用opendal作为object_store后端 (README)

这些包共同支持了Rust中更广泛的分析计算功能。

例如,您可以使用(使用datafusion包)写SQL查询或一个DataFrame(使用parquet包)来读取Parquet文件(使用arrow包),在内存中使用Arrow的列式格式(使用arrow包)进行评估,并将其发送到另一个进程(使用arrow-flight包)。

一般来说,arrow包提供了使用Arrow数组的功能,而datafusion提供了大多数SQL中常见的操作,包括join和窗口函数。

您可以在各自的README中找到每个包的更多详细信息。

Arrow Rust社区

dev@arrow.apache.org邮件列表是Arrow社区的核心沟通渠道。有关注册说明和存档链接,请访问Arrow社区页面。所有重大公告和沟通都发生在此处。

Rust Arrow社区还使用官方的ASF Slack进行非正式讨论和协调。这是一个结识其他贡献者并获得贡献指导的好地方。加入我们的#arrow-rust频道,并通过以下方式请求邀请

  1. dev@arrow.apache.org邮件列表
  2. GitHub Discussions
  3. Discord频道

Rust实现使用GitHub issues作为新功能和错误修复的记录系统,这在发布过程中起着关键作用。

在设计讨论中,我们通常在谷歌文档上进行协作,并通过GitHub问题将文档链接起来。

有关更多信息,请参阅贡献指南


lib.rs:

Apache Arrow Rust的低级别数组数据抽象

对于更高级、强类型化的接口,请参阅arrow_array

依赖项

~1MB
~25K SLoC