gpt4 book ai didi

apache-spark - pyspark 中的全局计数器

转载 作者:行者123 更新时间:2023-12-03 09:28:57 26 4
gpt4 key购买 nike

为什么我下面用pyspark写的counter总不能给我正确的结果,是不是和global counter有关?

def increment_counter():
global counter
counter += 1

def get_number_of_element(rdd):
global counter
counter = 0
rdd.foreach(lambda x:increment_counter())
return counter

最佳答案

您的全局变量仅在驱动程序节点上定义,这意味着它可以正常工作,直到您在本地主机上运行。一旦您将作业分配给多个进程,它们将无法访问 counter 变量,只会在自己的进程中创建一个新的。因此最终结果将只包含驱动程序进程中完成的增量。

不过,您正在寻找的是一种非常常见的用法,并且包含在 Spark 的累加器功能中。累加器在流程结束时进行分发和收集,因此总计将包含所有节点的增量,而不仅仅是驱动程序节点。

Accumulators - Spark Programming Guide

关于apache-spark - pyspark 中的全局计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40873538/

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