gpt4 book ai didi

apache-spark - Spark collect_set 与 distinct

转载 作者:行者123 更新时间:2023-12-05 03:50:06 26 4
gpt4 key购买 nike

如果我的目标是将列中的不同值收集为列表,使用其中任何一个是否存在性能差异或优缺点?

df.select(column).distinct().collect()...

对比

df.select(collect_set(column)).first()...

最佳答案

collect_set 是一个聚合器函数,开头需要一个 groupBy。当没有提供分组时,它将把整个数据作为一个大组。

1。收集集

df.select(collect_set(column)).first()...

这会将 column 列的所有数据发送到将执行 collect_set 操作(删除重复项)的单个节点。如果您的数据量很大,那么它将淹没所有数据所在的单个执行程序。

2。独特的

df.select(column).distinct().collect()...

这将根据其值(称为分区键)对 column 列的所有数据进行分区,不。分区数将是 spark.sql.shuffle.partitions 的值(比如 200)。因此将执行 200 个任务来删除重复项,每个分区键 1 个。然后只有去重数据将被发送到驱动程序进行 .collect() 操作。如果删除重复项后的数据很大,这将失败,将导致驱动程序内存不足。

简单描述:

.distinct.collect_set 更适合您的特定需求

关于apache-spark - Spark collect_set 与 distinct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63623832/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com