Spark Scala def收益率

时间:2018-03-05 11:11:43

标签: scala apache-spark

SO 33655920我看到了下面的内容,很好。

rdd = sc.parallelize([1, 2, 3, 4], 2)
def f(iterator): yield sum(iterator)
rdd.mapPartitions(f).collect()

在Scala中,我似乎无法以相同的速记方式获得def。相当于?我搜索过并试过但无济于事。

提前致谢。

2 个答案:

答案 0 :(得分:1)

如果要对分区中的值求和,可以编写类似

的内容
val rdd = sc.parallelize(1 to 4, 2)
def f(i: Iterator[Int]) = Iterator(i.sum)
rdd.mapPartitions(f).collect()

答案 1 :(得分:1)

Python中的

yield sum(iterator)总结了迭代器的元素。在Scala中执行此操作的类似方法是:

val rdd = sc.parallelize(Array(1, 2, 3, 4), 2)
rdd.mapPartitions(it => Iterator(it.sum)).collect()