Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dask 编写netCDF文件非常慢_Dask_Netcdf_Python Xarray - Fatal编程技术网

Dask 编写netCDF文件非常慢

Dask 编写netCDF文件非常慢,dask,netcdf,python-xarray,Dask,Netcdf,Python Xarray,我试图在数据集上执行一个相当简单的操作,包括编辑每个3.5GB的netcdf文件上的变量和全局属性。使用xr.open\u dataset立即加载文件,但是dataset.to\u netcdf()太慢,修改后无法导出。 我试过: 无需重新调整和dask调用 不同的块大小,后跟: 在之前使用load()加载到\u netcdf 在之前使用persist()或compute()来 我在一个HPC上工作,有10个分散的工人。在所有情况下,每个文件所用的时间都超过15分钟。这是预期的吗?除了使用das

我试图在数据集上执行一个相当简单的操作,包括编辑每个3.5GB的netcdf文件上的变量和全局属性。使用
xr.open\u dataset
立即加载文件,但是
dataset.to\u netcdf()
太慢,修改后无法导出。 我试过:

  • 无需重新调整和dask调用
  • 不同的块大小,后跟:
  • 之前使用
    load()
    加载到\u netcdf
  • 之前使用
    persist()
    compute()
  • 我在一个HPC上工作,有10个分散的工人。在所有情况下,每个文件所用的时间都超过15分钟。这是预期的吗?除了使用dask delayed进一步并行化单个文件操作之外,我还可以尝试什么来加速此过程?

    首先请注意:

    使用xr.open_数据集立即加载文件

    此时您可能没有实际加载数据,只有元数据。根据IO和压缩/编码,加载数据可能需要大量CPU和内存。您应该知道使用单个CPU线程应该花费多少时间

    回答我们的问题: netCDF(HDF5)不能很好地处理并行写入。您可能会发现,由于锁定,一次只写入一个任务,甚至在写入之前,输出数据都将发送到一个任务,而与您的分块无关。请检查您的dask仪表板

    我建议您尝试zarr格式,它适用于并行应用程序,因为每个块位于不同的文件中。您仍然需要对数据的正确分块做出决定()