我按照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
?
答案 0 :(得分:2)
> head(DF, n=100)
timestep cellNo.
1 1 1
2 1 2
3 1 3
4 1 4
5 1 5
6 1 6
7 1 7
8 1 8
9 1 9
10 1 10
11 1 11
12 1 12
13 1 13
14 1 14
15 1 15
16 1 16
17 1 17
18 1 18
19 1 19
20 1 20
21 1 21
22 1 22
23 1 23
24 1 24
25 1 25
26 1 26
27 1 27
28 1 28
29 1 29
30 1 30
31 1 31
32 1 32
33 2 1
34 2 2
35 2 3
36 2 4
37 2 5
38 2 6
39 2 7
40 2 8
41 2 9
42 2 10
43 2 11
44 2 12
45 2 13
46 2 14
47 2 15
48 2 16
49 2 17
50 2 18
51 2 19
52 2 20
53 2 21
54 2 22
55 2 23
56 2 24
57 2 25
58 2 26
59 2 27
60 2 28
61 2 29
62 2 30
63 2 31
64 2 32
65 3 1
66 3 2
67 3 3
68 3 4
69 3 5
70 3 6
71 3 7
72 3 8
73 3 9
74 3 10
75 3 11
76 3 12
77 3 13
78 3 14
79 3 15
80 3 16
81 3 17
82 3 18
83 3 19
84 3 20
85 3 21
86 3 22
87 3 23
88 3 24
89 3 25
90 3 26
91 3 27
92 3 28
93 3 29
94 3 30
95 3 31
96 3 32
97 4 1
98 4 2
99 4 3
100 4 4
,_1
,... _2
是用于提取Scala中元组元素的方法。这些没有特殊的Spark特定上下文。 _2
和user
是Rating
的字段。由于product
ratings
创建如下:
RDD[(Long, Rating)]
你应该有一个完整的图片。
答案 1 :(得分:1)
ratings
的类型为RDD[(Int, Rating)]
。因此ratings.map
使用(Int, Rating)
参数的函数,而_
中的_.something
代表此参数。 _2
返回元组的第二个字段(Rating
),user
和product
在Rating
的声明中声明。