Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.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
包装在xarray数据集中的dask数组子集上的并行任务_Dask_Python Xarray - Fatal编程技术网

包装在xarray数据集中的dask数组子集上的并行任务

包装在xarray数据集中的dask数组子集上的并行任务,dask,python-xarray,Dask,Python Xarray,我有一个大的xarray.Dataset存储为zarr。我想对它执行一些定制操作,这些操作不能通过使用Dask集群自动处理的类似numpy的函数来完成。因此,我将数据集划分为几个小子集,并为每个子集向我的Dask集群提交以下形式的任务 def my_task(zarr_path, subset_index): ds = xarray.open_zarr(zarr_path) # this returns an xarray.Dataset containing a dask.array

我有一个大的xarray.Dataset存储为zarr。我想对它执行一些定制操作,这些操作不能通过使用Dask集群自动处理的类似numpy的函数来完成。因此,我将数据集划分为几个小子集,并为每个子集向我的Dask集群提交以下形式的任务

def my_task(zarr_path, subset_index):
    ds = xarray.open_zarr(zarr_path)  # this returns an xarray.Dataset containing a dask.array
    sel = ds.sel(partition_index)
    sel  = sel.load()  # I want to get the data into memory
    # then do my custom operations
    ...
但是,我注意到这会创建一个“任务中的任务”:当工作人员收到“我的任务”时,它会将任务提交到集群以加载数据集的相关部分。为了避免这种情况,并确保在worker中执行完整的任务,我将提交以下任务:

def my_task_2(zarr_path, subset_index):
    with dask.config.set(scheduler="threading"):
        my_task(zarr_path, subset_index)

这是最好的方法吗?这种情况下的最佳实践是什么?

通常使用
apply_ufunc
map_blocks
等方法在Xarray数据集中的块之间并行应用函数