Метод вызывается дважды вместо одного вызова в многопроцессорной обработке Dask - PullRequest
1 голос
/ 19 сентября 2019

Я пытаюсь загрузить файл из хранилища Google и проанализировать его.Существуют миллионы таких файлов, которые необходимо загрузить, проанализировать и выполнить с ними некоторые операции (обработка на естественном языке и т. Д.).

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

import pandas as pd
import numpy as np
import dask
import dask.dataframe as dd

# downloading file and extract skill sets and store in skill_sets column
chunk_size = 20
df_list = np.array_split(temp_df, temp_df.shape[0]/chunk_size)
temp_df["skill_sets"] = ""
result_df = pd.DataFrame(data={}, columns=temp_df.columns)

for df_ in df_list:
    df_["skill_sets"] =  dd.from_pandas(df_, npartitions=4, sort=False, name='x').apply(extract_skill, axis=1, meta='object').compute()
    result_df = pd.concat([result_df, df_], axis=0)

extract_skill ()

def extract_skill(row):
    // download file, parse and do some nlp stuff
    file_name = row['file_path']
    ......
    ......
    return skill_sets

Заранее спасибо.

1 Ответ

0 голосов
/ 21 сентября 2019

Метод DataFrame.apply запускает вашу функцию на небольшой выборке данных, чтобы определить типы данных и столбцы выходных данных.Посмотрите строку документации этой функции и ищите ключевое слово "meta" для получения дополнительной информации.

...