2016-09-30 5 views
2

Я хочу лениво создать dataframe DASK от генератора, который выглядит примерно так:Лениво создать DASK dataframe от генератора

[parser.read(local_file_name) for local_file_name in repo.download_files())] 

Где и parser.read и repo.download_files возврата генераторов (с использованием выхода). parser.read дает словарь пар ключ-значение, которые (если я просто используя простые панд) будет собирать каждый словарь, чтобы список, а затем использовать:

df = pd.DataFrame(parsed_rows) 

Какой самый лучший способ создать DASK dataframe от этого? Причина в том, что: а) я не знаю, обязательно количество возвращаемых результатов, и б) я не знаю распределения памяти на машине, на которой он будет развернут.

Кроме того, что я должен делать по-другому (например, может быть, создать кучу dataframes, а затем положить в те к DASK вместо?)

Спасибо.

ответ

1

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

filenames = repo.download_files() 
dataframes = [delayed(load)(filename) for filename in filenames] 
df = dd.from_delayed(dataframes) 

Если вы используете distributed scheduler вы можете добавлять новые расчеты на лету, но это немного более продвинутым.

Смежные вопросы