scala - Spark中ALS的实现

标签 scala apache-spark

我现在使用 Spark 中实现的 ALS 。在目录 /org/apache/spark/ 中有两个不同的包 ml and mllib 。这两个包都有子文件夹 recommendation ,并且在此文件夹中包含类 ALS.scala (mllib 还有额外的 MatrixFactorizationModel.scala)

我的问题是,mlmllib 目录之间有什么区别? 例如我发现the tutorial of using ALS Apache Spark 在网络中的应用。本教程中使用了 mllib 包。我什么时候可以使用 ml 套餐?为什么我们需要两个不同的包 ml 和 mllib?

最佳答案

Spark ML Lib 现在正在重新设计。旧类位于 mllib 包中,新类位于 ml 中。新类基于 DataFrame,由于 Tungsten 优化,速度可能会更快。

通常,如果可能的话,您应该使用 ml 包,因为将来 mllib 包将被弃用并删除。

编辑:我没有任何完整教程的链接,但这里是我使用的 ALS 代码:

val als = new ALS()
    .setUserCol("userCol")
    .setItemCol("itemCol")
    .setRank(rank)
    .setMaxIter(iterationNumber)
    .setRegParam(lambda)

val model = als.fit(trainingDataFrame)
val predictions = model.transform (dataFrameToPredict)

关于scala - Spark中ALS的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39450215/

相关文章:

dataframe - Spark中DataFrame、Dataset、RDD的区别

hadoop - Apache Cassandra VS Spark VS Hive VS Storm

scala - 在 Scala 中,给定一个列表列表,如何从元素创建一个嵌套的 HashMap?

scala - 一起使用两个 Option 实例的正确方法

scala - Apache Spark : Getting a InstanceAlreadyExistsException when running the Kafka producer

scala - 如何在 DataFrame 中展开数组(来自 JSON)?

scala - 如何在终端中打印 ApacheSpark RDD 的内容?

java - 如何在 Java 中使用 repartitionAndSortWithinPartitions

java - 在 Spark 中运行大连接时,执行程序运行超出内存限制

json - 在 Spark SQL 中使用 JSON 路径