python - Python MapReduce 如何添加条件语句
问题描述
我是 MapReduce 的新手,我正在尝试在 MovieLens 100k 数据集中查找电影的平均电影评论。我有一个工作程序可以找到每部电影的平均评论,但我想要的是只对评论超过 100 的电影执行此操作。如何添加条件语句来执行此操作?
from mrjob.job import MRJob
class PopularMovieAvgReview(MRJob):
def mapper(self, key, line):
(userID, movieID, rating, timestamp) = line.split('\t')
yield movieID, float(rating)
def reducer(self, movieID, rating):
total = 0
numElements = 0
for x in rating:
total += x
numElements += 1
yield movieID, total / numElements
if __name__ == '__main__':
PopularMovieAvgReview.run()
解决方案
如果我理解正确,您想根据给出的评分数限制输出
def reducer(self, movieID, rating):
total = 0
numElements = 0
for x in rating:
total += x
numElements += 1
if numElements > 100:
yield movieID, total / numElements
或者,使用 PySpark,您可以聚合,然后过滤评级量
推荐阅读
- flutter - Flutter - 在小部件树中检测到重复的 GlobalKey
- python - 防止不透明度与创建的每个新对象相乘
- mysql - 查询增量数Mysql主键
- javascript - 在three.js中沿y轴移动对象
- ios - 如何通过手指绘制使用核心图形显示隐藏的图像?
- rust - 无法编译 bitvec 0.19.4“找到多个 `BITS`”
- python - Discord.py dm 命令
- python - 异常值:在 Django 中没有名为“PIL”的模块
- audio - 如何使用 ffmpeg 组合 2 个 opus 音频文件?
- python - 是否可以在 Python 的字典中移动或交换元素位置?