我有一个变量 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)
答案 0 :(得分:0)
该方法的名称为updateStateByStream
,用小写的u
而不是UpdateStateByStream
。 Scala区分大小写。
答案 1 :(得分:0)
问题在于spark-streaming
库没有完全添加到项目的依赖项中。因此,我刚刚将spark-streaming
。jar添加到File->Project Structure->Modules
的依赖项中。