DASK с локальными файлами в системах WORKER

Я работаю с несколькими системами как рабочие. В каждой рабочей системе часть данных хранится локально. И я хочу, чтобы вычисления выполнялись каждым рабочим только в соответствующем файле.

Я пробовал использовать:

распределенный.scheduler.decide_worker ()

send_task_to_worker (рабочий, ключ)

но я не мог автоматизировать назначение задачи для каждого файла.

Кроме того, могу ли я получить доступ к локальным файлам работника? Используя tcp-адрес, у меня есть доступ только к временной папке рабочего, созданной для dask.


person Jyotsna_b    schedule 08.06.2017    source источник
comment
Вы знаете априори, какие файлы находятся на каких рабочих машинах?   -  person mdurant    schedule 08.06.2017


Ответы (1)


Вы можете нацелить вычисления на выполнение определенных рабочих процессов, используя ключевое слово 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 для получения дополнительной информации.

person MRocklin    schedule 08.06.2017