fsspec-bosfs
更新时间:2025-03-21
概述
fsspec-bosfs (以下简称 bosfs) 是一个基于 Python 接口的文件系统实现,用以便捷访问百度云对象存储 BOS 服务。通过 bosfs,用户可以使用标准的 fsspec 接口操作存储于 BOS 中的数据。
安装
使用 pip 安装 pyftpdlib
$ pip install bosfs
查看是否安装成功
$ pip show bosfs
快速开始
配置访问凭证
-
初始化 BOSFileSystem 时通过参数指定
import bosfs fs = bosfs.BOSFileSystem(endpoint='http://bj.bcebos.com', access_key='{your ak}', secret_key='{your sk}', sts_token=None)
-
配置环境变量
export BCE_ACCESS_KEY_ID=xxx export BCE_SECRET_ACCESS_KEY=xxx export BOS_ENDPOINT=xxx
示例
-
通过 bosfs 列举 BOS 上的数据
import bosfs fs = bosfs.BOSFileSystem(endpoint='http://bj.bcebos.com', access_key='xxx', secret_key='xxx') res = fs.ls('/mybucket/') print(res)
-
通过 bosfs 读取 BOS 上的数据
import bosfs fs = bosfs.BOSFileSystem(endpoint='http://bj.bcebos.com', access_key='xxx', secret_key='xxx') with fs.open('/mybucket/README.md') as f: print(f.readline())
-
通过 bosfs 写入数据到 BOS
import bosfs import os fs = bosfs.BOSFileSystem(endpoint='http://bj.bcebos.com', access_key='xxx', secret_key='xxx') object_name = "file1" data = os.urandom(10 * 2**20) with bosfs.open(object_name, "wb") as f_wb: f_wb.write(data)
更多使用方法可参考 fsspec 文档。
读写性能
测试环境
- 测试机器:16 核 32G 内存, 3Gbps 网络带宽
性能测试结果
单文件顺序读写性能
file_size_mb | write_speed_mbps | read_speed_mbps | write_time_s | read_time_s |
---|---|---|---|---|
1 | 9.672178 | 4.640667 | 0.104893 | 0.216561 |
4 | 24.867180 | 15.987999 | 0.160897 | 0.250713 |
10 | 30.681564 | 30.890233 | 0.343196 | 0.325457 |
128 | 75.634190 | 93.547005 | 1.692568 | 1.369047 |
512 | 80.359467 | 97.840121 | 6.371391 | 5.233074 |
多文件并发读写性能
file_nums | file_size_mb | threads_nums | write_speed_mbps | read_speed_mbps | write_time_s | read_time_s |
---|---|---|---|---|---|---|
1000 | 4 | 16 | 381.91 | 301.56 | 10.47 | 13.26 |
使用限制
- 当前 bosfs 暂不支持 async 模式