使用Apache-Flink als运行ml-10m数据集,但只得到13个预测

时间:2018-04-16 14:35:48

标签: apache-flink

使用Apache Flink als时使用以下代码:

val env=ExecutionEnvironment.getExecutionEnvironment
val inputDS: DataSet[String]=env.readTextFile("/home/master/dataset/ml-10m/trainset")
val inputDS1: DataSet[Tuple3[Int,Int,Double]] = inputDS.map{
      t =>
      val split = t.split("::")
      Tuple3(split(0).toInt, split(1).toInt, split(2).toDouble)                               
          }
val als = ALS()
         .setIterations(5)
         .setNumFactors(10)
         .setBlocks(300)
         // Set the other parameters via a parameter map
         val parameters = ParameterMap()                                                                        
        .add(ALS.Lambda, 0.2)                                                                                 
        .add(ALS.Seed, 42L)                                                                               
        // Calculate the factorization                                                                                          
        als.fit(inputDS1, parameters)
  val inputttestDS: DataSet[String] = env.readTextFile("/home/master/dataset/ml-10m/testset")                                                                                                       
  val testingDS: DataSet[Tuple2[Int,Int]] = inputttestDS.map{                                                                                                      
          t =>                                                                                                                                                                                                                                 
          val split = t.split("::")                                                                                                                            
          Tuple2(split(0).toInt, split(1).toInt)
}    
val predictedRatings=als.predict(testingDS)
predictedRatings.print()
predictedRatings.writeAsText("path to result")
env.execute()

但结果只预测结果文件中的最后13个数据。 对于apache flink来说,数据是否太大了(对于火车数据集,它有8000000个观测值。此外,测试数据集有20000000个观测值)?数据框是“userid :: itemid :: rating :: timestamp”。此外,我的电脑是8G。或者我的代码中有一些错误?请告诉我,谢谢。

1 个答案:

答案 0 :(得分:0)

我发现了问题,这是我数据集的问题。在我的测试数据集中,它只有13个观察结果,其用户标识出现在训练数据集中。因此,它只对这些数据进行预测。