Путаница в отношении кластерного планировщика и распределенного планировщика для одной машины
В приведенном ниже коде, почему 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()