оценки - это набор кортежей: (timestamp% 10, Rating (userId, movieId, rating)). Первое подчеркивание в _._ 2.user означает текущий элемент, обрабатываемый функцией отображения. Итак, первое подчеркивание теперь относится к кортежу (пара значений). Для парного кортежа t вы можете ссылаться на его первый и второй элементы в сокращенной нотации: t._1 & t._2 Итак, _._ 2 выбирает второй элемент кортежа, который в настоящее время обрабатывается функцией отображения.
val ratings = sc.textFile(movieLensHomeDir + "/ratings.dat").map { line =>
val fields = line.split("::")
// format: (timestamp % 10, Rating(userId, movieId, rating))
(fields(3).toLong % 10, Rating(fields(0).toInt, fields(1).toInt, fields(2).toDouble))
}
'рейтинги' содержит кортеж элементов' N'. '_._ 2' означает« доступ к кортежу в месте второго элемента ». '_' является заполнителем для всего кортежа, это эквивалентно' .map (x => x._2) ' –