关于火花聚合函数的澄清

问题描述 投票:0回答:1

我是Scala和Spark的新手。我不知道聚合函数。我收到了以下代码,但不了解输出值。

    val z = sc.parallelize(List("12","23","345","4567"),2)

    z.aggregate("")((x,y) => math.min(x.length, y.length).toString, (x,y) => x + y)

    res5: String = 11

有2个分区。提供的初始值为“”。我不太确定如何应用值(x,y)。但是我的理解是,对于第一个分区,它将迭代地将它们取为(“”,“ 12”)(“ 12”,“ 23”),并且为第一个分区返回的最小值为0。对于第二个分区,类似分区(x,y)从(“”,“ 345”)(“ 345”,“ 4567”)迭代评估min函数,并且为第二个分区返回的min值为0。

Reducer函数从那里接管结果“” +“ 0” +“ 0”-最终输出应该是“ 00”,但实际输出是“ 11”

我缺少什么,有人可以解释上述代码的聚合函数如何工作。特别是,我没有(x,y)概念。

我是Scala和Spark的新手。我不知道聚合函数。我得到了以下代码,但不了解输出值。 val z = sc.parallelize(List(“ 12”,“ 23”,“ ...

scala apache-spark
1个回答
0
投票

您可以通过添加一些日志记录来查看正在发生的事情:

© www.soinside.com 2019 - 2024. All rights reserved.