将 ML 库建议写入文本文件

Writing Out ML lib recommendations to text file

我正在使用 mllib(在 scala 中)中的 ALS 实现来为一组用户生成产品推荐。我的 ALS 实施工作正常并产生评级。我使用了这条线:

val recs = model.recommendProductsForUsers(20)

为每个用户创建一个包含 20 个产品推荐的数组。这工作正常,收视率如下: (96,数组(评分(96,61,1.0889034936577194E-8),评分(96,274,7.364985542945079E-9)..)

即它的结构为 Array[(Int, Array[org.apache.spark.mllib.recommendation.Rating])]

我需要将这些建议写入文本文件。我试过:

recs.saveAsTextFile("./testoutput")

这会运行,但输出不是我需要的数字,而是看起来像是某种对象(而不是对象内的文本)

(87,[Lorg.apache.spark.mllib.recommendation.Rating;@28ccda46)

我知道我需要使用地图将评分对象转换为文本对象,但我无法使用地图的任何组合来工作correctly.I认为这个问题是稍微复杂一点的版本 How to export mllib als results into text file Spark - 但那里建议的解决方案对我不起作用,因为我正在与多个用户打交道。

有几种方法可以解决这个问题,包括手动创建输出字符串:

recs.mapValues(_.mkString(",")).saveAsTextFile(somePath)

或转换为原生 Scala 类型,如 ListVector:

recs.mapValues(_.toVector).saveAsTextFile(somePath)