我有一个1.5 tb大小的hdf5文件在亚马逊简单存储服务位于下面的链接。我没有磁盘空间来保存它,也没有内存来读取它。因此,我想按块读取它,处理它,并丢弃读取部分。我希望使用pandas的read_hdf来读取它,但它不支持url。h5py库似乎也没有。虽然它确实提到了一个ros3
驱动程序,但我还没有能够让它工作。我也尝试了对这个问题的回应,但是块不能被h5py读取,或者我还没有找到一种方法。所以我不知道如何处理这个文件。有人知道怎么做吗?该文件的链接如下:
https://oedi -数据- lake.s3西- 2. - amazonaws.com/building_synthetic_dataset/a_synthetic_building_operation_dataset.h5
在遇到这个完全相同的问题之后,我相信我已经使用fsspec
拼凑了一个工作解决方案:
import h5py
import fsspec
URL = "..." # Assuming a publicly accessible url
remote_f = fsspec.open(URL, mode="rb")
if hasattr(remote_f, "open"):
remote_f = remote_f.open()
f = h5py.File(remote_f)
# Do regular hdf5 things...
我已经确认,使用上面的链接,这不会将数据读入内存,就像它是一个本地文件一样:
import h5py
import fsspec
URL = "https://oedi-data-lake.s3-us-west-2.amazonaws.com/building_synthetic_dataset/A_Synthetic_Building_Operation_Dataset.h5"
remote_f = fsspec.open(URL, mode="rb")
if hasattr(remote_f, "open"):
remote_f = remote_f.open()
f = h5py.File(remote_f)
f.visititems(print)
# 1. README <HDF5 dataset "1. README": shape (), type "|O">
# 2. Resources <HDF5 group "/2. Resources" (2 members)>
# 2. Resources/2.1. Building Models <HDF5 group "/2. Resources/2.1. Building Models" (9 members)>
...