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

时间:2017-06-08 14:21:12

标签: worker file-sharing dask

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

我尝试过使用:

distributed.scheduler.decide_worker()

send_task_to_worker(worker,key)

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

另外,无论如何我可以访问该工作人员的本地文件吗?使用tcp地址,我只能访问为dask创建的worker的临时文件夹。

1 个答案:

答案 0 :(得分:0)

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

您可以在每个工作人员上运行一个函数,告诉您哪些文件存在:

>>> 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