Dask 与简单的顺序应用程序:将无限数据写入单个 NetCDF

问题描述 投票:0回答:1

我需要将所有无限制(目前已增加,1TB)数据导出到单个 NetCDF4 文件。

完整的 ETL 包括:

  • 各种计算
  • 然后将所有结果写入单个 NetCDF 文件

最后一部分(写入单个 NetCDF 文件)是我关注的重点。

我的需求:

  • 写入 NetCDF OP 的最短持续时间
  • 物理内存限制,并且很大程度上低于整个数据集本身(所以我需要避免每个变量一次分配整个 ndarray)

2018年好像有相关讨论: https://github.com/dask/distributed/issues/2163

问题

截至 2024 年,与简单(单线程)Python 相比,使用 Dask 将数据写入单个 NetCDF 文件是否有任何好处(提高并行性?逐块写入,从而减少内存消耗?)使用标准 NetCDF 库的顺序应用程序?

python dask python-xarray netcdf netcdf4
1个回答
0
投票
标准 dask.array 的 to_hdf 将在目标文件中创建并填充一个数组。 HDF5 支持分配数组并随时填充块。如果您可以将您的过程表述为一组 dask.array 操作(例如,从文件读取,每个文件成为数组的一个块),那么这就是您获得分块操作和低内存使用量所需的全部

https:/ /docs.dask.org/en/latest/ generated/dask.array.to_hdf5.html

在无法使用 dask.array 的情况下(也许您将在另一个会话中返回更多数据),您仍然可以以追加模式打开文件/变量,并使用 dask.delayed 写入每个块。请注意,数组的内部分块以及压缩等其他选项将在初始创建时固定。

© www.soinside.com 2019 - 2024. All rights reserved.