我是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)
我想首先获得每个分区的最大值,然后减少所有分区的输出。 有人可以帮助我理解为什么我会收到这个错误吗?
答案 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。