2016-08-14 2 views
1

저는 scala와 spark를 처음 사용하고 reduceByKey를 구현하는 동안 아래 오류가 발생했습니다.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) 

우선 파티션 당 최대 값을 얻고 모든 파티션의 출력을 줄이려고합니다. 누군가이 오류가 발생하는 이유를 이해하는 데 도움을 줄 수 있습니까?

답변

2

val은 스칼라의 키워드이며 val이라는 변수는 가질 수 없습니다. v가 작동 할 것으로 변경하십시오.

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

작동합니다.

if else 대신 math.max(acc,v)을 사용할 수 있습니다.

+0

감사합니다. Knight71. 나는 내장해서는 안된다. 고마워. 위의 기술을 사용하여 분을 찾는데 도와 줄 수 있습니까? –

+0

누산기는 항상 0으로 초기화되므로 최소값을 얻기 위해 누적 값을 비교할 수 없습니다. 나에게 힌트를 줬어? –

+0

여기에 어큐뮬레이터 란 무엇입니까? reduceByKey 예제 http://dmtolpeko.com/2015/02/12/multi-column-key-and-value-reduce-a-tuple-in-spark/ – Knight71

관련 문제