Python pyspark约简方法的模糊度
reduce函数只接受1个参数,但它提供2或3个参数 我搜索了整个python代码,没有关于reduce的任何其他定义。Python pyspark约简方法的模糊度,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,reduce函数只接受1个参数,但它提供2或3个参数 我搜索了整个python代码,没有关于reduce的任何其他定义。reduce()有一个方法。它不在全局命名空间中;它只是类或实例的一个属性。当它调用reduce()时,它不是递归;它正在调用内置函数。如果它想调用此处定义的reduce(),则需要使用self.reduce(…)。内置函数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)