python - pyspark reduce 方法的歧义

标签 python apache-spark pyspark

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 函数只接受 1 个参数,但它给出了 2 或 3 个参数。

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

最佳答案

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

关于python - pyspark reduce 方法的歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35970946/

相关文章:

python - Pandas 根据另一列 python 在一列中获取唯一值

java - Spark : How to map Python with Scala or Java User Defined Functions?

scala - 如何计算由 Spark 中的 (Key, [Value]) 对组成的 RDD 中每对的平均值?

作为输入传递给函数的python字典在该函数中充当全局而不是局部

python过滤字符串以返回列表

apache-spark - 为什么 StandardScaler 不将元数据附加到输出列?

python - 如何隐藏/排除相对于另一个表的数据框列

python - PySpark 无法将字典的 RDD 转换为 DataFrame。错误 : can not accept object in type <class 'pyspark.sql.types.Row' >

hadoop 作业与 pyspark 和 oozie 陷入僵局

python - 使用 sqlalchemy 进行连接压缩