无法将RDD附加到scala中的列表

时间:2016-11-15 19:20:20

标签: scala list

您好以下我无法在Scala中将值附加到我的列表中,以下是我的代码:

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时,我不确定为什么会出错。我是用错误的语法写的吗?

2 个答案:

答案 0 :(得分:1)

使用:+不是+:

以下是更正后的行

cumFrequency :+ newRDD

使用List.empty[Any]List[Any]()

初始化您的cumFrequency
var cumFrequency = List[Any]()

var cumFrequency =List.empty[Any]

要附加到列表,请使用:::++:+

如果是List,请试试这个

cumFrequency ::: List(newRDD)

cumFrequency ++ List(newRDD)

或者如果你不关心订单那么

newRDD :: cumFrequency 

答案 1 :(得分: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数据类型。