值 _1 不是 org.apache.spark.mllib.recommendation.Rating 的成员

value _1 is not a member of org.apache.spark.mllib.recommendation.Rating

我有一个带有 spark MLlib-scala 的应用程序,我想将我的数据分成三部分:训练、测试、验证。我的代码如下:

 val training_RDD = Ratingfiles.filter(x => x._1 < 6)
      .values
      .cache()

val validation_RDD = Ratingfiles.filter(x => x._1 >= 6 && x._1 < 8)
      .values
      .cache()

当我用 sbt compile 编译我的程序时,我有这个错误:

value _1 is not a member of org.apache.spark.mllib.recommendation.Rating

Spark 核心:1.4.1 火花MLlib:2.0.1 斯卡拉版本:2.11.1 SBT 版本:0.13.12

正如编译器声称的那样,org.apache.spark.mllib.recommendation.Rating 没有名为 _1 的成员(您可能将它与元组混淆,其成员为 _1_2等)。

Rating 有三个成员:

case class Rating @Since("0.8.0") (
  @Since("0.8.0") user: Int,
  @Since("0.8.0") product: Int,
  @Since("0.8.0") rating: Double) 

所以 - 如果您打算按 user 过滤,只需访问该成员而不是 _1:

val training_RDD = Ratingfiles.filter(x => x.user < 6)
  .cache()

val validation_RDD = Ratingfiles.filter(x => x.user >= 6 && x.user < 8)
  .cache()

Spark 等级 class 有 3 个属性(自 spark 0.8.0 起):

  • 用户
  • 产品
  • 评分

如果要获取第一个值,需要调用user();第二个值 product();第三个值 rating()

来源:https://spark.apache.org/docs/1.4.0/api/java/org/apache/spark/mllib/recommendation/Rating.html

https://github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/mllib/recommendation/ALS.scala