用途:在 Arrow/Parquet 原生流水线中直接访问本地及远程存储。PyArrow 自带文件系统抽象,安装仅需 pip install pyarrow,无额外依赖。
主要能力:通过 fs.FileSystem.from_uri 自动识别 s3://、gs://、file:// 等 URI;S3FileSystem 支持 access_key、secret_key、session_token、region、endpoint_override、scheme、proxy_options、retry_strategy 等配置;提供 get_file_info、open_input_stream、open_output_stream、copy_file、delete_file 等操作。配合 pyarrow.dataset 可加载 Hive 分区 Parquet 数据集,使用 filter 实现谓词下推、columns 实现列裁剪,scanner.to_batches() 分批扫描并支持 use_threads。
Azure 支持:借助 adlfs 创建 AzureBlobFileSystem,再用 fs.PyFileSystem(fs.FSSpecHandler(azure_fs)) 包装后供 dataset 使用。
适用场景:Arrow/Parquet 原生流水线、需要零拷贝集成、谓词下推与列裁剪关键、分区 Parquet 数据集、希望依赖最少时。与 Polars 可用 pl.scan_pyarrow_dataset;Delta Lake/Iceberg 构建数据集对象时也可使用。
限制:文件操作使用 bucket/key 路径而非 s3:// URI;与 pandas、Dask 等生态集成时 fsspec 可能更方便;大量小文件追求最大异步性能可考虑 obstore。认证配置详见相关存储认证资料。