源码见ALS.scala和MatrixFactorizationModel.scala
调用方法
import org.apache.spark.mllib.recommendation.{ALS, Rating}
import org.apache.spark.sql.{Row, SparkSession}
import org.apache.spark.storage.StorageLevel
val spark = SparkSession.builder().enableHiveSupport().appName("RecommendProduct").getOrCreate()
val user_no = spark.sql("select pin,uid,cate from user_encoding_table").persist(StorageLevel.MEMORY_ONLY_SER)
val item_no = spark.sql("select itemid, item_id, fund_type from item_id_encoding_table").cache()
val ratings = spark.sql("select pin, item_id, rate from ratings_table" + partTableName + "_rate_dt where dt='" + date + "'")
.join(user_no, "pin")
.join(item_no, "item_id")
.select("uid", "item_id", "rate")
.rdd
.map { case Row(uid: Int, item_id: Int, rate: Double) => Rating(uid.toInt, item_id.toInt, rate.toDouble) }
val model = ALS.trainImplicit(ratings, rank = 10, iterations = 5, lambda = 0.01, alpha = 0.01)
println("training finished.")
注意:这里输入的格式必须是Rating格式:
@Since("0.8.0")
case class Rating @Since("0.8.0") (
@Since("0.8.0") user: Int,
@Since(