2014-09-02 9 views
2

Как я могу пройти через RDD, используя Spark scala. Я хочу распечатать каждое значение, присутствующее в 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 ** явно ** утверждает, что перемещение фигурных скобок на новые строки для «правильного» форматирования неодобрительно. Что касается разницы между именованными значениями и подчеркиваниями, это также личное предпочтение. То, что вы считаете раздутым, может предпочесть кому-то другому. –