首页 > 解决方案 > 如果 .computed 被唤起,Kubernetes\Dask 上的 Xarray (rasterio) 无法找到路径

问题描述

在 GC 上,我使用 HELM 和 stable/dask 存储库部署了 dask。

一旦运行并通过 config.yaml 文件添加了 Xarray 和 Rasterio,我就可以使用 xarray.open_rasterio('...') 读取文件。

如果我尝试在对象上调用 .compute() ,则会收到错误消息,指出 rasterio 已创建 IOError,因为没有找到此类文件。我是第一次发生在我身上

在这里复制的是我的 config.yaml

worker:
  replicas: 3
  env:
    - name: EXTRA_APT_PACKAGES
      value : libzstd1
    - name: EXTRA_CONDA_PACKAGES
      value: numpy pandas scipy rasterio xarray matplotlib netcdf4 nomkl statsmodels numba gcsfs pyhdf -c conda-forge
    - name: EXTRA_PIP_PACKAGES
      value: git+https://github.com/PhenoloBoy/FenicePhenolo
jupyter:
  enabled: true
  env:
    - name: EXTRA_APT_PACKAGES
      value : apt-utils libzstd1
    - name: EXTRA_CONDA_PACKAGES
      value: numpy pandas scipy rasterio xarray matplotlib netcdf4 nomkl statsmodels numba gcsfs pyhdf -c conda-forge
    - name: EXTRA_PIP_PACKAGES
      value: git+https://github.com/PhenoloBoy/FenicePhenolo

这里的脚本

import xarray as xr
from distributed import Client

client = Client()
data = xr.open_rasterio('file.img', chunks=(..,..,..))
data.compute()

标签: kubernetesdistributeddaskkubernetes-helmpython-xarray

解决方案


听起来您的 dask 工作人员无法访问与您的客户端相同的文件系统。

详细地说,您首先从客户端大小中找到文件列表,并获取一些元数据。然后您使用工作人员实际加载块,因此他们必须能够看到完全相同的文件。您必须有一些共享文件系统,或者引用外部存储,例如 s3/gcs。


推荐阅读