【发布时间】:2016-06-29 15:02:01
【问题描述】:
filter() 和 reduce() 方法在 spark RDD 上有什么区别?换句话说,为什么 filter() 是转换而 reduce() 是动作?对我来说两者听起来很相似。那么是什么让它们不同?过滤器是窄的还是宽的?
【问题讨论】:
标签: java apache-spark pyspark rdd
filter() 和 reduce() 方法在 spark RDD 上有什么区别?换句话说,为什么 filter() 是转换而 reduce() 是动作?对我来说两者听起来很相似。那么是什么让它们不同?过滤器是窄的还是宽的?
【问题讨论】:
标签: java apache-spark pyspark rdd
filter 很窄,因为它只适用于每行级别并返回另一个(过滤的)rdd。 Reduce 实际上返回一个在整个 rdd 上计算的值。要返回这个值,必须进行实际计算,这就是为什么 reduce 是一个动作。
一般而言,必须返回实际值或写入一些输出的 rdd.functions 是操作,而返回另一个 rdd 的 rdd.functions 是转换。
只有在需要某个动作时,才会发生导致它的 rdd 转换(Spark 的惰性属性)
【讨论】: