通过 s3fs 从 S3 读取文件时可以使用 xr.open_mfdataset 吗?

Can you use xr.open_mfdataset when reading files from S3 via s3fs?

我正在尝试使用 xr.open_mfdataset 从 S3 存储桶中使用 s3fs 一次读取多个 netcdf 文件。这可能吗?

尝试了以下方法,它适用于 xr.open_dataset 单个文件,但不适用于多个文件:

import s3fs
import xarray as xr

fs = s3fs.S3FileSystem(anon=False)
s3path = 's3://my-bucket/wind_data*'
store = s3fs.S3Map(root=s3path, s3=s3fs.S3FileSystem(), check=False)

data = xr.open_mfdataset(store, combine='by_coords')

我不确定 S3Map 到底是做什么的; s3fs 的文档在这方面没有具体说明。

但是,我能够使用 S3FileSystem.glob()S3FileSystem.open()

在 Jupyter 环境中创建一个有效的实现

这是一个代码示例:

import s3fs
import xarray as xr


s3 = s3fs.S3FileSystem(anon=False)

# This generates a list of strings with filenames
s3path = 's3://your-bucket/your-folder/file_prefix*'
remote_files = s3.glob(s3path)

# Iterate through remote_files to create a fileset
fileset = [s3.open(file) for file in remote_files]

# This works
data = xr.open_mfdataset(fileset, combine='by_coords')