Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 将ML lib建议写入文本文件_Scala_Apache Spark_Apache Spark Mllib - Fatal编程技术网

Scala 将ML lib建议写入文本文件

Scala 将ML lib建议写入文本文件,scala,apache-spark,apache-spark-mllib,Scala,Apache Spark,Apache Spark Mllib,我正在使用mllib中的ALS实现(在scala中)为一组用户生成产品建议。我的ALS实现工作正常并生成评级。我用过这句话: val recs = model.recommendProductsForUsers(20) 为每个用户创建20个产品建议的数组。这很好,评级如下所示: (96,阵列(额定值(96,61,1.0889034936577194E-8),额定值(96274,7.364985542945079E-9)…) 它的结构是数组[(Int,Array[org.apache.spark

我正在使用mllib中的ALS实现(在scala中)为一组用户生成产品建议。我的ALS实现工作正常并生成评级。我用过这句话:

val recs = model.recommendProductsForUsers(20)
为每个用户创建20个产品建议的数组。这很好,评级如下所示: (96,阵列(额定值(96,61,1.0889034936577194E-8),额定值(96274,7.364985542945079E-9)…)

它的结构是数组[(Int,Array[org.apache.spark.mllib.recommendation.Rating])]

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

recs.saveAsTextFile("./testoutput")
这会运行,但输出的不是我需要的数字,而是某种对象(而不是对象中的文本)

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

我知道我需要使用地图将评级对象转换为文本对象,但我无法使任何地图组合正常工作。我认为这个问题是
-但是解决方案表明,这不适用于我,因为我要处理多个用户。

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

recs.mapValues(_.mkString(",")).saveAsTextFile(somePath)
或转换为本机Scala类型,如
列表
向量

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

谢谢!我认为关键是使用mapValues,而不仅仅是map。这两个答案对我来说都很好。不客气。也可以使用
map
来完成。
mapValues
使它变得更短。主要问题是Java-Scala互操作。顺便说一句,请不要忘记。