2014-09-02 5 views
2

어떻게 Spark scala를 사용하여 RDD를 따라 트래버스 할 수 있습니까? Seq에있는 모든 값을 관련 키와 함께 인쇄하려고합니다.Spark scala RDD traversing

res1: org.apache.spark.rdd.RDD[(java.lang.String, Seq[java.lang.String])] = MapPartitionsRDD[6] at groupByKey at <console>:14 

다음 코드를 시도했습니다.

val ss=mapfile.map(x=>{ 
val key=x._1 
val value=x._2.sorted 
    var i=0 
while (i < value.length) { 
    (key,value(i)) 
    i += 1 
     } 
    }  
) 
ss.top(20).foreach(println) 

답변

3

나는 다음과 같이 코드를 변환하려고 :

val ss = mapfile.flatMap { 
    case (key, value) => value.sorted.map((key, _)) 
} 
ss.top(20).foreach(println) 

당신이 원하는 무엇인가?

+0

@samthebest 원래 형식이 * 괜찮은 * 스타일 편집은 일반적으로 다음과 같은 경우에 싫증납니다. http://meta.stackoverflow.com/questions/263115/when-is-it-okay-to-edit-answers -for-code-formatting/263121 # 263121 –

+0

@LimbSoup 내 변경 사항 ("명확하고 객관적으로 더 나은"). Intellij는 서식 변경, 즉 공백과 새 줄을 추가했을 것입니다. 아마도 그것은 '개인적 선호'라고 생각하는 람다에서 불필요한 매개 변수 값 이름을 제거한 것이지만, 일반적인 프로그래밍 원칙이라고 주장 할 것입니다. KISS, 이름을 필요로하지 않는 것들의 이름을 말하지 마십시오 - 왜 부 풀리는 코드입니까? – samthebest

+0

@samthebest "명확하고 객관적으로 더 낫다"는 것은 코드의 서식이 처음부터 시작되었음을 의미합니다. Intellij가하는 일을 인용하는 것은 유효하지 않습니다. 모두가 그렇게 쓰는 것은 아닙니다. Meta **에 링크 된 포스트는 명확하게 "수정"하기 위해 새 줄로 괄호를 움직이는 것에 대해 눈살을 찌푸리게됩니다. 명명 된 값과 밑줄의 차이는 개인적인 취향이기도합니다. 당신이 생각하는 것은 다른 누군가가 부풀어 오른 것을 선호 할지도 모릅니다. –