【发布时间】:2019-10-13 16:03:50
【问题描述】:
我有一组电影数据/收视率,我需要计算电影收视率的平均值。这就像 SQL 中的评级 groupby movieId 的总和。 非常感谢您的帮助
我尝试使用aggregateBYKey,但我不知道如何使用seqOp 和CombOp 函数。我是 PySpark 的新手。
这是我的 RDD 的一部分:[movieId, userId, rating, film]
[('1', '1', 4.0, 'Toy Story (1995)'),
('1', '5', 4.0, 'Toy Story (1995)'),
('1', '7', 4.5, 'Toy Story (1995)'),
('1', '15', 2.5, 'Toy Story (1995)'),
('1', '17', 4.5, 'Toy Story (1995)'),
('1', '18', 3.5, 'Toy Story (1995)'),
('1', '19', 4.0, 'Toy Story (1995)'),
('1', '21', 3.5, 'Toy Story (1995)'),
('1', '27', 3.0, 'Toy Story (1995)'),
('1', '31', 5.0, 'Toy Story (1995)'),
('1', '32', 3.0, 'Toy Story (1995)'),
('1', '33', 3.0, 'Toy Story (1995)'),
('1', '40', 5.0, 'Toy Story (1995)'),
('1', '43', 5.0, 'Toy Story (1995)'),
('1', '44', 3.0, 'Toy Story (1995)'),
('1', '45', 4.0, 'Toy Story (1995)'),
('1', '46', 5.0, 'Toy Story (1995)'),
('1', '50', 3.0, 'Toy Story (1995)'),
('1', '54', 3.0, 'Toy Story (1995)'),
('1', '57', 5.0, 'Toy Story (1995)')]
我需要计算每部电影的平均评分,例如:
[('1', average_ratings_of_film_1, film_name_1),
('2', average_ratings_of_film_2, film_name_2)]
非常感谢您的帮助
【问题讨论】:
-
你可以做groupby并取平均
df.groupBy("movie").avg("rating").show() -
谢谢猪,这解决了它,但我需要使用 RDD 的 :/...
标签: pyspark average rdd calculation