我正在学习Spark,遇到了文档中关于并行集合的this部分。我从文档中复制了python中的以下内容,以执行Reduce步骤:
from pyspark import SparkConf, SparkContext
configuration = SparkConf().setMaster("local[4]").setAppName("Test")
sc = SparkContext(conf = configuration)
data = [1, 2, 3, 4, 5]
datapar = sc.parallelize(data)
result = datapar.reduce(lambda a, b: a + b)
print result
我得到的答案是15
,正如文档中所解释的,这是所有元素的相加。但是,如果我将result
修改为datapar.reduce(lambda a, b: a)
并打印result
,我得到1
,如果我将其修改为datapar.reduce(lambda a, b: b)
,我得到5
。你知道吗
值a
和b
分别返回1
和5
,但在我的原始代码中加在一起会导致datapar
中所有元素的相加?他们更喜欢语法吗?谢谢!你知道吗
这纯粹是一个关于^{} 如何工作的问题。你知道吗
lambda函数的左参数(
a
在本例中)表示应用lambda函数a + b
的聚合值。右边的值是iterable的更新值。例如:这就是
lambda a + b: a
的情况…和
lambda a + b: b
相关问题 更多 >
编程相关推荐