我在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)

我知道我需要使用地图将评级对象转换为文本对象但我无法使任何地图组合正常工作。我认为这个问题是一个稍微复杂的版本如何将mllib als结果导出到文本文件Spark中 -但解决方案表明这对我不起作用,因为我正在处理多个用户。

===============>>#1 票数:2 已采纳

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

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

或转换为本机Scala类型,如ListVector

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

  ask by clairekelley translate from so

未解决问题?本站智能推荐: