我有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
可能包含触发评估的计数?!
希望这足够具体,很高兴提供清晰的信息:)