【发布时间】:2016-10-28 17:07:17
【问题描述】:
我读过这样的文件:
val ratingText = sc.textFile("/home/cloudera/rec_data/processed_data/ratings/000000_0")
使用以下函数解析此数据:
def parseRating(str: String): Rating= {
val fields = str.split(",")
Rating(fields(0).toInt, fields(1).trim.toInt, fields(2).trim.toDouble)
}
并创建了一个rdd,然后拆分成不同的RDD
val ratingsRDD = ratingText.map(x=>parseRating(x)).cache()
val splits = ratingsRDD.randomSplit(Array(0.8, 0.2), 0L)
val trainingRatingsRDD = splits(0).cache()
使用训练RDD创建模型如下:
val model = (new ALS().setRank(20).setIterations(10) .run(trainingRatingsRDD))
我在最后一个命令中收到以下错误
16/10/28 01:03:44 WARN BLAS: Failed to load implementation from: com.github.fommil.netlib.NativeSystemBLAS
16/10/28 01:03:44 WARN BLAS: Failed to load implementation from: com.github.fommil.netlib.NativeRefBLAS
16/10/28 01:03:46 WARN LAPACK: Failed to load implementation from: com.github.fommil.netlib.NativeSystemLAPACK
16/10/28 01:03:46 WARN LAPACK: Failed to load implementation from: com.github.fommil.netlib.NativeRefLAPACK
编辑:T. Gaweda 的建议有助于消除错误,但我仍然收到以下警告:
16/10/28 01:53:59 WARN Executor: 1 block locks were not released by TID = 60:
[rdd_420_0]
16/10/28 01:54:00 WARN Executor: 1 block locks were not released by TID = 61:
[rdd_421_0]
我认为这导致了一个空模型,因为下一步会导致以下错误:
val topRecsForUser = model.recommendProducts(4276736,3)
错误是:
java.util.NoSuchElementException: next on empty iterator at scala.collection.Iterator$$anon$2.next(Iterator.scala:39)
请帮忙!
【问题讨论】:
标签: scala apache-spark apache-spark-mllib