Путаница в отношении кластерного планировщика и распределенного планировщика для одной машины

В приведенном ниже коде, почему dd.read_csv работает на кластере? client.read_csv должен работать на кластере.

import dask.dataframe as dd
from dask.distributed import Client

client=Client('10.31.32.34:8786')
dd.read_csv('file.csv',blocksize=10e7)
dd.compute()

Это тот случай, когда после создания объекта client все вызовы API будут выполняться в кластере?

2 ответа

Комнад dd.read_csv('file.csv', blocksize==1e8) будет генерировать много pd.read_csv(...) Команды, каждая из которых будет работать на ваших рабочих. Каждая задача будет искать файл file.csv, искать какое-то место в этом файле, определенном вашим размером блока, и считывать эти байты, чтобы создать кадр данных pandas. Файл file.csv должен быть универсально представлен для каждого работника.

Обычно люди используют файлы, которые находятся в общедоступном хранилище, например, в сетевой файловой системе, базе данных или хранилище облачных объектов.

В дополнение к первому ответу:

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

  • для конкретного вычисления,

    dd.compute(scheduler='threads')
    
  • для черного кода,

    with dask.config.set(scheduler='threads'):
        dd.compute()
    
  • до дальнейшего уведомления,

    dask.config.set(scheduler='threads')
    dd.compute()
    

См. http://dask.pydata.org/en/latest/scheduling.html

Другие вопросы по тегам