我知道collect会将节点拉到driver节点,但如果我执行以下代码,Spark会在worker节点上计算最大日期,然后将结果收集到driver节点,还是会将节点收集到driver节点,然后计算最大日期?
df.select(max("date")).collect()[0][0]
字符串由于上面的代码,我的集群已经崩溃了几次。我以为在收集结果之前,最大日期将在工作线程上计算,但考虑到集群正在崩溃,我想知道是否实际上是相反的。
sdnqo3pr1#
max将在每个Worker(map)上执行。称为partial_max。然后将所有这些max结果发送到单个分区,以决定max的最大值(reduce)。因此,以分布式方式工作。这不需要使用collect。参见Best way to get the max value in a Spark dataframe column。也参见https://medium.com/geekculture/finding-the-latest-date-is-not-as-easy-as-you-would-think-2d6a0a49eda1
max
partial_max
collect
1条答案
按热度按时间sdnqo3pr1#
max
将在每个Worker(map)上执行。称为partial_max
。然后将所有这些max结果发送到单个分区,以决定max的最大值(reduce)。因此,以分布式方式工作。这不需要使用
collect
。参见Best way to get the max value in a Spark dataframe column。也参见https://medium.com/geekculture/finding-the-latest-date-is-not-as-easy-as-you-would-think-2d6a0a49eda1