在 WORKER 系统上使用本地文件进行 DASK

DASK with local files on WORKER systems

我正在使用多个系统作为工作人员。 每个工作系统都有一部分数据存储在本地。我希望每个工作人员仅在其各自的文件上完成计算。

我试过使用:

distributed.scheduler.decide_worker()

send_task_to_worker(工人,钥匙)

但我无法自动为每个文件分配任务。

另外,我是否可以访问工作人员的本地文件?使用 tcp 地址,我只能访问为 dask 创建的工作人员的临时文件夹。

您可以使用 workers= 关键字针对客户端上的各种方法对某些工作人员进行 运行 的计算。有关详细信息,请参阅 http://distributed.readthedocs.io/en/latest/locality.html#user-control

您可能 运行 每个 worker 上的一个函数,告诉您存在哪些文件:

>>> client.run(os.listdir, my_directory)
{'192.168.0.1:52523': ['myfile1.dat', 'myfile2.dat'],
 '192.168.0.2:4244': ['myfile3.dat'],
 '192.168.0.3:5515': ['myfile4.dat', 'myfile5.dat']}

然后您可以将计算提交给 运行 具体针对这些工人。

future = client.submit(load, 'myfile1.dat', workers='192.168.0.1:52523')

如果您使用 dask.delayed,您还可以将 workers= 传递给 `persist 方法。有关详细信息,请参阅 http://distributed.readthedocs.io/en/latest/locality.html#user-control