例如,如果我有付款数据[DataFrame中30到40列],数据量大约为4百万[虽然不是很大]。但需要在DF上使用groupBy和agg操作进行大量[25到30]不同的计算。
由于我们将使用相同的DF进行不同的计算,因此我们使用cache()
。
示例DF:
country transactions
IN 1001
IN 1002
UK 1003
UK 1004
目前我正在做的是
df.groupBy("country").agg(countDisinct(transactions)) as txncnt)
我的问题是我可以实现相同的其他方式[可能是在Spark SQL DataFrame中对数据进行分组的更好方法],我们可以执行类似reduceByKey or AggregateByKey [RDD operations]?
答案 0 :(得分:0)
因此,如果您正在使用groupBy并对数据执行操作,则可能应该直接使用reduceByKey。然后每个执行者只发送他的计算结果。
尝试创建一个带有组计算的DF,您可以将其用于所有20个计算并缓存它......