我的代码使用类StreamingKMeans
对来自kafka的流数据进行聚类。我想计算模型错误(WSSSE),但是类StreamingKMeansModel
具有此功能computeCost(RDD<Vector> data)
。输入是RDD,而不是DStream。我不能将此函数应用于DStream。
我这样做可以解决问题:
trainingData.saveAsTextFiles("/home/hduser/sbt_project/project1/Dstream/")
val rddTraining= ssc.sparkContext.textFile("/home/hduser/sbt_project/project1/Dstream/")
val vectorTraining=rddTraining.map(s => Vectors.dense(s.split(' ').map(_.toDouble))).cache()
val WSSSE=model.latestModel().computeCost(vectorTraining)
但是saveAsTextFiles
每个流创建一个文件夹,而textFile
从文件读取而不是从文件夹读取。
我可以解决此问题吗?我可以将流附加到文件吗?