2016-11-15 2 views
0

Hi следующий я неспособен добавить значения в мой список в Scala Ниже мой код:Невозможно добавить RDD в список в Скале

var cumFrequency =List[Any] 
updatedRdd.foreachRDD(rdd => { 
    for(item <- rdd.collect()) { 
    val newRDD = (item._1,item._2.toString.toDouble/newc) 
    cumFrequency +: newRDD 
    } 

}) 

Я получаю ошибку при cumFrequency +: newRDD из не может разрешить символ. Я не уверен, почему он дает эту ошибку, когда я хочу добавить newRDD в список cumFrequency. я пишу в неправильном синтаксисе?

ответ

1

Использование: + не +:

Ниже исправленное линия

cumFrequency :+ newRDD 

Initialise вас cumFrequency с помощью List.empty[Any] или List[Any]()

var cumFrequency = List[Any]() 

или

var cumFrequency =List.empty[Any] 

Для того, чтобы добавить в список использования ::: или ++ или :+

В случае списка попробовать этот

cumFrequency ::: List(newRDD) 

или

cumFrequency ++ List (newRDD)

или если вы не заботятся о заказе, то

newRDD :: cumFrequency 
0

Чтобы сделать эту работу в контексте вашей программы, где значения добавляются в список в императивном стиле, вам необходимо:

cumFrequency = cumFrequency ++ List(newRDD) 

или

cumFrequency = newRDD :: cumFrequency 

И вы должны добавить скобки после объявления:

var cumFrequency =List[Any]() 

Этот стиль не рекомендуется большинством программистов Scala. Лучше всего было бы что-то вроде:

val cumFrequency = updatedRdd.flatMap(rdd => { 
    for(item <- rdd) yield (item._1,item._2.toString.toDouble/2) 
}) 

Но это будет зависеть от типа данных RDD, который я не знаком.

Смежные вопросы