我应该避免在数据集/数据帧中使用groupby()吗? [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我应该避免在数据集/数据帧中使用groupby()吗? [重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我知道在RDD中我们不鼓励使用groupByKey,并鼓励使用reduceByKey()和aggregateByKey()之类的替代方法,因为这些其他方法会先减少每个分区,然后执行groupByKey(),从而减少数据被洗牌。

现在,我的问题是,这仍然适用于数据集/数据帧吗?我在想,既然催化剂引擎做了很多优化,催化剂会自动知道它应该减少每个分区,然后执行groupBy。我对么?或者我们仍然需要采取措施确保在groupBy之前执行每个分区的减少。

答案

groupBy应该用于Dataframes和Datasets。您认为完全正确,Catalyst Optimizer将构建计划并优化GroupBy中的所有入口以及您要执行的其他聚合。

有一个很好的例子,就是在这个link上的spark 1.4中,它显示了reduceByKey与RDD和GroupBy与DataFrame的比较。

而且你可以看到它比RDD快得多,所以groupBy优化所有执行以获得更多细节,你可以通过introduction of DataFrames看到DataBricks的官方帖子

以上是关于我应该避免在数据集/数据帧中使用groupby()吗? [重复]的主要内容,如果未能解决你的问题,请参考以下文章

熊猫,我怎样才能避免使用 iterrow (如何根据来自另一个数据帧的值将值分配给数据帧中的新列)

如何使用实际数据帧中两列中的值索引另一个数据帧,从而在实际数据框中创建列

在处理具有不同结构的相同数据集时避免取消引用

PCA 恢复数据帧中最重要的特征

如果日期介于第二个数据帧中的两个日期之间,则 r 标记第一个数据帧中的行

大数据集,使用unstack()时收到“ Unstacked DataFrame太大,导致int32溢出”