У меня есть код 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
может содержать подсчеты, запускающие оценки?!
Надеюсь, что это достаточно конкретно, рад предоставить ясность :)