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

时间:2016-12-19 15:28:11

标签: scala apache-spark apache-spark-mllib

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

 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-core:1.4.1 火花MLlib:2.0.1 Scala版本:2.11.1 版本:0.13.12

2 个答案:

答案 0 :(得分:2)

正如编译器声称的那样,org.apache.spark.mllib.recommendation.Rating没有名为_1的成员(您可能会将其与元组混淆,成员为_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

答案 1 :(得分:0)

Spark Rating类有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