为什么我不能在程序中使用UpdateStateByKey?

时间:2018-07-20 18:21:15

标签: scala apache-spark spark-streaming stateful

我有一个变量 inputVector DStream[(Int, BDM[Double]),其中BDM为Breeze Matrix。我想对它使用UpdateStateByKey,但是当我尝试使用它时,却得到Cannot resolve symbol UpdateStateByKey

我是Spark的新手,但据我所知,您只有key-value对才能使用。

我想念什么?

我的代码是:

val ssc = new StreamingContext(conf, Seconds(3))
val lines = ssc.socketTextStream("localhost", 9999)
ssc.checkpoint("./checkpoints/")

var inputRdd = lines.map(x => x.split(","))

var arr = inputRdd.transform(x => x.groupBy(_ (1)).mapValues(x => x
                  .foldLeft(Array.ofDim[Double](C, T)) { (a, b) => {
                   var c = a
                   c(b(2).toInt)(findNextEmpty(a,b(2).toInt, T)) += b(3).toDouble
                   c  }}))

var inputVector = arr.transform(x => x.map(y=> (y._1.toInt, BDM(y._2.map(_.toArray):_*))))

var example = inputVector.updateStateByKey(somefunc)

2 个答案:

答案 0 :(得分:0)

该方法的名称为updateStateByStream,用小写的u而不是UpdateStateByStream。 Scala区分大小写。

答案 1 :(得分:0)

问题在于spark-streaming库没有完全添加到项目的依赖项中。因此,我刚刚将spark-streaming。jar添加到File->Project Structure->Modules的依赖项中。