一、aggregateByKey [Pair]
像聚合函数一样工作,但聚合应用于具有相同键的值。 也不像聚合函数,初始值不应用于第二个reduce。
列表变式
(1)def aggregateByKey[U](zeroValue: U)(seqOp: (U, V) ⇒ U, combOp: (U, U) ⇒ U)(implicit arg0: ClassTag[U]): RDD[(K, U)]
ps:
使用给定的组合函数和中性“零值”汇总每个键的值。此函数可返回不同的结果类型U,而不是此RDD中的值的类型,
因此,我们需要一个用于将V合并成U的操作和用于合并两个U的一个操作,如在scala.TraversableOnce中。 前一个操作用于合并a中的值
分区,后者用于合并分区之间的值。 避免记忆分配,这两个函数都允许修改并返回其第一个参数而不是创建一个新的U.
(2)def aggregateByKey[U](zeroValue: U, numPartitions: Int)(seqOp: (U, V) ⇒ U, combOp: (U, U) ⇒ U)(implicit arg0: ClassTag[U]): RDD[(K, U)]
ps:
使用给定的组合函数和中性“零值”汇总每个键的值。此函数可返回不同的结果类型U,而不是此RDD中的值的类型,