为什么“reduceByKey的错误:简单表达的非法开始”?

时间:2016-08-14 09:36:34

标签: apache-spark

我是scala和spark的新手,在实施reduceByKey时遇到了以下错误。

var redRdd = filterRdd.reduceByKey((acc , val) => if (acc > val ) acc else val)
<console>:1: error: illegal start of simple expression
var redRdd = filterRdd.reduceByKey((acc , val) => if (acc > val ) acc else val)

filterRdd只是(order_id,Amount)元组。

scala> filterRdd.first
res10: (Int, Double) = (1,299.98)

我想首先获得每个分区的最大值,然后减少所有分区的输出。 有人可以帮助我理解为什么我会收到这个错误吗?

1 个答案:

答案 0 :(得分:3)

val是scala中的关键字,你不能拥有一个名为val的变量。将val更改为v将起作用。

 var redRdd = filterRdd.reduceByKey((acc , v) => if (acc > v ) acc else v)

它会起作用。

您可以使用math.max(acc,v)代替if else。