文件缓冲和随机访问

文件缓冲和随机访问#

大多数实现都创建了从 fsspec.spec.AbstractBufferedFile 派生的文件对象,并且具有许多共同的行为。AbstractBufferedFile 的子类为底层类似文件的数据提供了随机访问(无需下载整个文件)。这是大数据访问模型中的关键特性,其中操作的每个子任务可能只需要文件的一小部分,因此不希望被迫下载整个文件。

这些文件提供了读写操作的缓冲,以限制与远程资源的通信。缓冲区的大小通常在打开时通过 blocksize= 参数进行配置,尽管实现可能需要遵守一些最小或最大尺寸。

对于读取,有多种缓冲方案可供选择,列在 fsspec.caching.caches 中(参见读取缓冲),或者选择“none”表示根本不进行缓冲,例如,对于简单的预读缓冲区,你可以这样做:

fs = fsspec.filesystem(...)
with fs.open(path, mode='rb', cache_type='readahead') as f:
    use_for_something(f)