Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pyspark的折叠函数中中性零值的含义是什么?_Python_Python 3.x_Apache Spark_Pyspark_Rdd - Fatal编程技术网

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)
以下是我对折叠功能的理解:

  • 它用于聚合

  • add是一个运算符,用于在索引1列中添加度量数据

  • 根据,第一个参数称为中性零值。(但我不知道这到底意味着什么。)

  • 我试着用1,2,-2,10来改变零值,然后分别出现递增和递减2,4,-4,20

    通过观察递增/递减模式,
    该方程似乎是result=2*中性值+聚合结果

  • foldByKey函数中也可以看到类似的零值


    单击此处获取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
    
    有关更多详细信息,请参见此。阅读其中的缩小和折叠功能