Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/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_Apache Spark_Pyspark - Fatal编程技术网

Python pyspark约简方法的模糊度

Python pyspark约简方法的模糊度,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,reduce函数只接受1个参数,但它提供2或3个参数 我搜索了整个python代码,没有关于reduce的任何其他定义。reduce()有一个方法。它不在全局命名空间中;它只是类或实例的一个属性。当它调用reduce()时,它不是递归;它正在调用内置函数。如果它想调用此处定义的reduce(),则需要使用self.reduce(…)。内置函数reduce()可以接受两个或三个参数。如果给定两个参数,它将应用第一个参数(一个函数)和两个参数:第二个参数的前两个元素(一个序列)。然后,它使用返回的内

reduce函数只接受1个参数,但它提供2或3个参数

我搜索了整个python代码,没有关于reduce的任何其他定义。

reduce()
有一个方法。它不在全局命名空间中;它只是类或实例的一个属性。当它调用
reduce()
时,它不是递归;它正在调用内置函数。如果它想调用此处定义的
reduce()
,则需要使用
self.reduce(…)
。内置函数
reduce()
可以接受两个或三个参数。如果给定两个参数,它将应用第一个参数(一个函数)和两个参数:第二个参数的前两个元素(一个序列)。然后,它使用返回的内容和序列中的第三个元素调用函数,并继续这样做,直到序列耗尽。当给出第三个参数时,它作为第一个参数给出,序列中的第一个元素作为第二个参数给出。下一次,它是该元素和序列中第二个元素的返回,并从那里继续。

正如zondo所说,第一个reduce不在全局名称空间中。 它只是类或实例的一个属性。 在内部,reduce的类定义称为内置python方法

在python中,使用带有三个参数的内置reduce方法时,如下所示:

def reduce(self, f):                                             #1 parameter
    def func(iterator): 
        iterator = iter(iterator) 
        try: 
            initial = next(iterator) 
        except StopIteration: 
            return 
        yield reduce(f, iterator, initial)                             #3 parameter 

    vals = self.mapPartitions(func).collect() 
    if vals: 
        return reduce(f, vals)                                         #2 parameter 
    raise ValueError("Can not reduce() empty RDD") 

您要求在列表上应用reduce myfunction,初始值为init。

类似于Scala中的
fold
reduce(myfunction, list, init)