在 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
我正在使用多个系统作为工作人员。 每个工作系统都有一部分数据存储在本地。我希望每个工作人员仅在其各自的文件上完成计算。
我试过使用:
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