文章目录
- gcsfs:用本地文件系统的方式操作Google Cloud Storage
- 1、这工具是干嘛的
- 2、支持两种高级存储模式
- 3、认证方式很全
- 4、异步支持
- 5、适合谁用
gcsfs:用本地文件系统的方式操作Google Cloud Storage
gcsfs在GitHub上已有391 Star。
这是一个Python库,做的事情很简单:把Google Cloud Storage当成本地文件系统来用。基于fsspec框架,你可以像操作本地目录一样读写云端存储桶里的文件。对于习惯用Python处理文件的人来说,这意味着不需要学习新的存储API,直接复用已有的文件操作经验。
1、这工具是干嘛的
Google Cloud Storage是GCP的对象存储服务,但原生API并不符合多数开发者的操作习惯。gcsfs在中间搭了一层抽象,把bucket映射为目录,把对象映射为文件。
安装只需要一行:
pipinstallgcsfs或者用conda:
condainstall-cconda-forge gcsfs引入后初始化文件系统对象:
importgcsfs fs=gcsfs.GCSFileSystem(project='my-google-project')files=fs.ls('my-bucket')withfs.open('my-bucket/data.txt','rb')asf:content=f.read()代码风格和标准库的open()、os.listdir()基本一致,几乎没有学习成本。因为兼容fsspec接口,gcsfs可以和pandas、dask、xarray等库直接配合,读取存储在GCS上的数据文件时不需要额外适配。
2、支持两种高级存储模式
gcsfs近期加入了对Google Cloud Storage新特性的自动支持。
Hierarchical Namespace(HNS)
传统GCS是扁平命名空间,目录只是前缀模拟。HNS引入真正的逻辑目录结构,带来几个实际好处:
- 目录重命名和移动变为O(1)的元数据操作,不再需要对每个对象执行复制加删除。
- 读写QPS提升最高可达8倍。
- 适合管理大量小文件,比如AI训练checkpoint和日志。
Rapid Buckets(Zonal Storage)
这是面向低延迟、高吞吐场景的区域存储:
- 数据与GPU/TPU集群位于同一可用区,网络延迟最小。
- 支持在现有对象上追加数据,标准GCS对象不支持此操作。
- 针对高速模型加载和实时日志流做了优化。
3、认证方式很全
gcsfs覆盖了常见的GCP认证场景:
- 默认模式:自动读取本地gcloud凭据或环境变量中的服务账户。
- Cloud模式:显式使用Google元数据服务。
- 匿名模式:无需登录即可访问公开数据。
- 服务账户模式:直接传入JSON密钥文件路径。
4、异步支持
底层基于aiohttp构建。高并发场景下,初始化时传入asynchronous=True即可使用异步API,适合IO密集型任务。
5、适合谁用
- 在GCP上做数据分析,需要把GCS数据接入pandas、dask、xarray的人。
- 构建ETL管线,需要在云端和本地之间频繁搬运文件的人。
- 写AI训练代码,需要把checkpoint存到对象存储的人。
- 做数据平台开发,需要统一接口访问本地和云端存储的人。
这个项目由fsspec社区维护,Anaconda也提供了部分资金支持。
int存到对象存储的人。
- 做数据平台开发,需要统一接口访问本地和云端存储的人。
这个项目由fsspec社区维护,Anaconda也提供了部分资金支持。