Как я могу написать эффективный цикл в pyspark? - PullRequest
0 голосов
/ 11 февраля 2019

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

Динамический список (например, в диапазоне от 5 до 100 элементов или более) определяет, сколько фреймов данныхЯ должен буду создать и присоединиться позже.Как уже говорилось, этот список является динамическим и изменяется каждый раз.

Ниже фрагмента кода, демонстрирующего наш текущий подход.

items = ['apples', 'oranges', 'nuts'] // this is dynamic!
df = XXX // reading in a DataFrame parallelized
collection = []

def func_abc(df):
    // transform df with groupby/count/mean/last/lag/...
    return df

for i in items:
    collection.append(func_abc(df)) // apply the function and collect result

// Join collected results
df = collection[0]
for c in collection[]:
    df.join(c, how='full')

df // contains now all datasets joined

Вопрос здесь в том, как мы можем сделать это более эффективно?Мы предполагаем, что цикл прерывает искрящую ленивую оценку, поскольку func_abc может содержать подсчеты, запускающие оценки?!

Надеюсь, что это достаточно конкретно, рад предоставить ясность :)

...