改成新
org.apache.spark.ml包(未来mllib包将不再使用,现已不再更新),很多人都会困惑如何读取预测的结果集,这里来讲解下:
比如:
ALSModel训练后 抓取里面的每个用户最喜欢的前10个品类
model.recommendForAllUsers(10)
返回的结果集是DataFrame,那么怎么去使用这个dataframe呢?
下面给出个小demo:
A: val userRecs:DataFrame = model.recommendForAllUsers(10) userRecs.foreach(row => { println(row(0) + ":") println(row(1)) } ) B: val userArray:Array[Row] = userRecs.collect() userArray.foreach(row => { println(row.get(0) + ":") val arrayPredict : Seq[Row] = row.getSeq(1) arrayPredict.foreach(rowPredict =>{ println(rowPredict(0) + "@" + rowPredict(1)) // println(rowPredict.head.asInstanceOf[Row](0) + "@" // + rowPredict.head.asInstanceOf[Row](1)) }) })
A代码直接对DataFrame操作是异步的,B代码collect以后变为数组操作,就是同步的。