对Spark MLlib中一个例子某些部分的误解
Misunderstanding of some parts of an example in Spark MLlib
我按照这个 example 使用 Spark MLLib 创建一个简单的个性化演示推荐器。
我对这几行代码中_._2.user
和_._2.product
的意思有点误解:
val numUsers = ratings.map(_._2.user).distinct.count
val numMovies = ratings.map(_._2.product).distinct.count
2
表示什么?此外,user
和 product
似乎是第一次出现在这一行中。那么,它们如何链接到 userId
和 movieId
?
_1
、_2
、... _2
是用于在 Scala 中提取元组元素的方法。这些在这里没有特殊的 Spark 特定上下文。 user
和 product
是 Rating
的字段。由于 ratings
是 RDD[(Long, Rating)]
创建如下:
val ratings = sc.textFile(...).map { line =>
...
(fields(3).toLong % 10, // Long
Rating(fields(0).toInt, fields(1).toInt, fields(2).toDouble)) // Rating
}
你应该有一张完整的照片。
ratings
的类型为 RDD[(Int, Rating)]
。所以 ratings.map
接受一个带有 (Int, Rating)
参数的函数,而 _.something
中的 _
代表这个参数。 _2
returns元组的第二个字段(Rating
),user
和product
在Rating
的声明中声明。
我按照这个 example 使用 Spark MLLib 创建一个简单的个性化演示推荐器。
我对这几行代码中_._2.user
和_._2.product
的意思有点误解:
val numUsers = ratings.map(_._2.user).distinct.count
val numMovies = ratings.map(_._2.product).distinct.count
2
表示什么?此外,user
和 product
似乎是第一次出现在这一行中。那么,它们如何链接到 userId
和 movieId
?
_1
、_2
、... _2
是用于在 Scala 中提取元组元素的方法。这些在这里没有特殊的 Spark 特定上下文。 user
和 product
是 Rating
的字段。由于 ratings
是 RDD[(Long, Rating)]
创建如下:
val ratings = sc.textFile(...).map { line =>
...
(fields(3).toLong % 10, // Long
Rating(fields(0).toInt, fields(1).toInt, fields(2).toDouble)) // Rating
}
你应该有一张完整的照片。
ratings
的类型为 RDD[(Int, Rating)]
。所以 ratings.map
接受一个带有 (Int, Rating)
参数的函数,而 _.something
中的 _
代表这个参数。 _2
returns元组的第二个字段(Rating
),user
和product
在Rating
的声明中声明。