Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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
Scala聚合函数与Spark RDD聚合函数_Scala_Apache Spark_Aggregate Functions_Lazy Evaluation - Fatal编程技术网

Scala聚合函数与Spark RDD聚合函数

Scala聚合函数与Spark RDD聚合函数,scala,apache-spark,aggregate-functions,lazy-evaluation,Scala,Apache Spark,Aggregate Functions,Lazy Evaluation,以下是该函数的定义: 斯卡拉: aggregate[B](z: => B)(seqop: (B, A) => B, combop: (B, B) => B): B Spark RDD: aggregate[B](z: B)(seqop: (B, A) => B, combop: (B, B) => B): B 我知道Scala聚合函数设计用于并行集合,Spark RDD聚合函数设计用于分布式集合 但是,为什么Scala中的z参数是惰性格式,而Spark RDD中

以下是该函数的定义:

斯卡拉:

aggregate[B](z: => B)(seqop: (B, A) => B, combop: (B, B) => B): B
Spark RDD:

aggregate[B](z: B)(seqop: (B, A) => B, combop: (B, B) => B): B
我知道Scala聚合函数设计用于并行集合,Spark RDD聚合函数设计用于分布式集合


但是,为什么Scala中的z参数是惰性格式,而Spark RDD中的z参数是渴望格式?首先,这是Scala中的一个按名称调用的参数。这意味着每次使用它们时都会对其进行求值,这与lazy不同,后者在第一次使用时只对其求值一次,并且所有后续调用都使用该结果。()


因此spark依赖于分布式数据集,这意味着可以在多个节点上进行计算。我认为他们选择了零元素,一个按值调用的参数(你称之为“渴望”),避免在执行此计算的每个节点上重新计算它。

可以肯定的是,所有转换都与Spark的底层架构有关。这也可能是为了简化Java的调用。我认为它不一定与Spark的底层架构有关,因为其他转换如fold在Scala和Spark RDD中具有相同的定义。那么,总的来说,有什么特别之处呢?