2 个不稳定版本
0.2.0 | 2022 年 5 月 17 日 |
---|---|
0.1.0 | 2021 年 11 月 20 日 |
#1303 在 算法
97 每月下载量
12KB
175 行
范围读取器
将读取文件范围的低级 API 转换为实现 Read + Seek
和 AsyncRead + AsyncSeek
的结构体。请参见 parquet_s3_async.rs,了解如何使用此 API 异步地从 s3 读取大 parquet 文件的部分。
原理
Blob 存储的 https API 提供了从单个 blob 读取字节范围的能力,即形式为
fn read_range_blocking(path: &str, start: usize, length: usize) -> Vec<u8>;
async fn read_range(path: &str, start: usize, length: usize) -> Vec<u8>;
及其总大小,
async fn length(path: &str) -> usize;
fn length(path: &str) -> usize;
这些 API 通常受 IO 限制 - 它们等待网络。
某些文件格式(例如 Apache Parquet、Apache Avro、Apache Arrow IPC)允许读取文件的部分进行过滤和投影下推。
此 crate 提供 2 个结构体,RangedReader
和 RangedStreamer
,分别实现 Read + Seek
和 AsyncRead + AsyncSeek
,以将上述 blob 存储 API 连接到大多数 Rust API 用于读取字节时使用的特性。
许可证
根据您的选择,许可为以下之一
- Apache 许可证,版本 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交以包含在作品中并由您定义的贡献,应如上双许可,没有任何附加条款或条件。
依赖项
~135KB