2015-01-20 18 views
0

저는 간단한 코드 줄이어야하는 어려움을 겪고있는 초보자입니다. 나는 .groupBy 연산을 수행하고 "it"을 닫지 만, 컴파일러는 "누락 된 매개 변수 유형"에 대해 불평하며이를 고치는 방법을 모릅니다. 여기에 정확한 코드는 (그것은 다른 네트워크에있어 내가 다시 입력 할 필요가 - 오타 변명) :groupBy의 "누락 된 매개 변수 유형"

val rddSAInCache: RDD[Map[String, Any]] = getCache(SAInCacheExported, rddconfig) 
    .filter(it => it.path(EventType).getOrElse(NONE) == "SAInCache") 
    .map(it => 
    Map(
     ("SAInCache" -> it.path(Time).getOrElse(NONE)), 
     (RequestID -> it.path(RequestID).getOrElse(NONE)) 
    ) 
) 
    .groupBy(it => it.path(RequestID.getOrElse(NONE)) 

컴파일러는 "가"필터 모두의지도 [문자열, 모든] 것을 추론 할 수있다 지도는 표시하지만 groupBy는 표시하지 않습니다. 왜?? 답변보다 제안의

+0

'groupBy'는'map' 다음에 있습니다. 그래서'it'은'Map'이며'.path' 메소드를 가지고 있지 않습니다. 어쩌면 실제 오류 일 수도 있고, 컴파일러가 옳지 않을 수있는 코드 유형을 추측하려고 혼란을 겪고있는 중입니까? – lmm

+0

경로 메쏘드를 갖기 위해 맵을 보강했습니다. 그건 문제가 아니야. – user1660256

답변

2

더 :

시도 분할 최대 체인 호출 :

val foo = rdd map f 
val bar = foo groupBy g 

REPL에서 foo는의 유형을 가져옵니다.

맵의 결과 유형 인 groupBy와 함께 과도하게 오버로드되고 implicits를 전달하는 문제를 해결하도록 요청하는 중입니다.

API에 대해 많이 알지 못하면 형식 매개 변수가 유추 할 수없는 경우 놀랄 일이 아닙니다.

+0

그게 제가 체인을 나눠서 일을 끝낸 것입니다. 감사! – user1660256