2016-04-14 19 views
0

'daki bazı bölümlerin yanlış anlaşılması Spark MLLib kullanarak basit bir kişiselleştirilmiş tanıtım önerisi oluşturmak için bunu example takip ediyorum.Bir örnekte Spark MLlib

val numUsers = ratings.map(_._2.user).distinct.count 
val numMovies = ratings.map(_._2.product).distinct.count 

belirten Ne 2:

Biraz bu kod satırları _._2.user ve _._2.product anlamını yanlış? Ayrıca bu satırda ilk kez user ve product gibi görünüyor. Peki, nasıl userId ve movieId ile bağlantılı?

cevap

2

_1, _2, ... _2 Scala'daki tuple öğelerini çıkarmak için kullanılan yöntemlerdir. Bunlar burada özel bir Spark özelliğine sahip değildir. user ve product, Rating'un alanlarıdır.

val ratings = sc.textFile(...).map { line => 
    ... 
    (fields(3).toLong % 10, // Long 
    Rating(fields(0).toInt, fields(1).toInt, fields(2).toDouble)) // Rating 
} 

tam bir resim olması gereken şu şekildedir: Ve ratings beri RDD[(Long, Rating)] oluşturulur.

1

ratings, RDD[(Int, Rating)] tipindedir. Yani ratings.map(Int, Rating) bağımsız değişkeni ile bir işlev alır ve _.something_ bu bağımsız değişkeni temsil eder. _2, tuple'ın (Rating) ikinci alanını döndürür ve user ve product, Rating bildirgesinde bildirilir.