如何在pyspark中编写有效的for循环?

时间:2019-02-11 04:26:03

标签: python apache-spark pyspark apache-spark-sql pyspark-sql

我有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可能包含触发评估的计数?!

希望这足够具体,很高兴提供清晰的信息:)

0 个答案:

没有答案