【发布时间】:2017-12-17 02:42:47
【问题描述】:
我有以下类型的纯 Scala 代码:
import breeze.numerics.log
import spire.random.Dist
import org.apache.commons.math3.distribution.NormalDistribution
import scala.collection.mutable.Buffer
def foo1(zs: Buffer[Double])={
val S = zs.zip(zs.reverse)
.map { case (x, y) =>log(x) * log(1 - y) }.sum
S
}
val x = Dist.uniform(0.0, 1.0).sample[Buffer](10)
val y = x.sortWith(_<_)
val cdf=new NormalDistribution(0, 1)
val z = y.map(x_ => cdf.cumulativeProbability(x_))
foo1(z)
z 已排序,因为cdf 正在增加
我想为 Spark 重写它,但是对于 RDD 数据类型,没有反向方法。如何为 Spark 编写此代码?
def foo2(z_rdd: RDD[Double])={
var S = z_rdd.zip(z_rdd.???)
.map { case (x, y) =>log(x) * log(1 - y) }.sum
S
}
其中???函数是反转的z_rdd。
【问题讨论】:
标签: scala apache-spark reverse rdd