为什么groupBy()比pyspark中的distinct()快得多?

为什么groupBy()比pyspark中的distinct()快得多?,pyspark,Pyspark,当我将spark数据帧上的distinct()替换为groupBy()时,我在pyspark代码中看到了很多性能改进。但我不明白背后的原因。 整个意图是从数据帧中删除行级重复项 我尝试在pyspark中用谷歌搜索groupBy()和distinct()的实现,但找不到它 有人能解释一下或给我指出正确的解释方向吗?distinct()实现检查每一列,如果两行或多行完全相同,则保留第一行。 我认为这是主要原因,为什么distinct如此缓慢 谢谢你的回答,但我没有找到任何理由让groupBy比dis

当我将spark数据帧上的
distinct()
替换为
groupBy()
时,我在pyspark代码中看到了很多性能改进。但我不明白背后的原因。 整个意图是从数据帧中删除行级重复项

我尝试在pyspark中用谷歌搜索
groupBy()
distinct()
的实现,但找不到它

有人能解释一下或给我指出正确的解释方向吗?

distinct()实现检查每一列,如果两行或多行完全相同,则保留第一行。 我认为这是主要原因,为什么distinct如此缓慢


谢谢你的回答,但我没有找到任何理由让groupBy比distinct()更快。如果你有100多列,spark作业应该比较所有列。groupBy处理一(通常)列,distinct()检查处理所有列。试想一下,您已经检查了所有列,这是一项多么困难的任务。如果我想删除行级重复项,那么我也将包括groupBy中的所有列,因此这不重要。如果您使用groupBy(),则执行器将在将组发送到只进行求和、计数的主控器后进行分组,etc by group which distinct()检查executors()中的每一列,并在executors将不同的数据帧发送给主机后尝试删除重复的数据帧,主机将再次检查所有列的不同值。我认为这是主要原因。