Python pyspark的折叠函数中中性零值的含义是什么?
下面是代码片段Python pyspark的折叠函数中中性零值的含义是什么?,python,python-3.x,apache-spark,pyspark,rdd,Python,Python 3.x,Apache Spark,Pyspark,Rdd,下面是代码片段 from operator import add iris1 = sc.textFile("./dataset/iris_site.csv") iris1_split = iris1.map(lambda var1: var1.split(",")) iris1_split.map(lambda col:float(col[0])).fold(0,add) 以下是我对折叠功能的理解: 它用于聚合 add是一个运算符,用于在索引1列中添加
from operator import add
iris1 = sc.textFile("./dataset/iris_site.csv")
iris1_split = iris1.map(lambda var1: var1.split(","))
iris1_split.map(lambda col:float(col[0])).fold(0,add)
以下是我对折叠功能的理解:
该方程似乎是result=2*中性值+聚合结果
单击此处获取iris中性零值实际上是操作的标识元素。在上面显示的情况下,操作是加法,因此标识元素必须为0。如果是乘法,则标识元素必须为1。
现在为什么需要中性零度? 因此,与fold()类似,还有reduce()。在将空集合指定给reduce()时,它抛出一个异常,其中在中性零的帮助下,已为空集合定义了as fold()。
类比
假设它是一个变量和,在执行加法操作时初始化为0
sum_ = 0 # here 0 is an identity element for addition
collection = [1,2,4,5]
for elem in collection:
sum_ += elem
即使您传递了一个空列表,和也会被定义。同样,对于乘法
prod = 1 # here 1 is an identity element for multiplication
collection = [1,2,4,5]
for elem in collection:
prod *= elem
有关更多详细信息,请参见此。阅读其中的缩小和折叠功能