有一个问题,我有一些日志,日志的每一行包含的 question_id, user_id, content and timestamp
,就像一些论坛数据。
我需要做的是使用mapreduce计算十大热门问题。
我编写了Map器输出 <question_id, 1>
对每一行的原木和减速机计算总的重量 user_id
对于每个 question_id
.
然后我发现Map器的输出太多了。这可能需要花费大量时间来洗牌和排序磁盘和网络中的数据。所以我做了一个优化,我用dict(或map)来存储 user_id
例如,对于每个问题, <qid1, uid1> <qid1, uid2>
可以优化为 <qid1, 2>
2是指 user_id
为了 qid1
.
但是,遗憾的是,这个解决方案比第一个算法慢。我认为访问dict(map)可能会增加时间消耗。
环境:
cloudra虚拟机
2核,2gb内存
问题:
数据大小和主机数量是选择算法的关键吗?
如何确定哪一个更适合我(我必须尝试这两种算法,然后找出哪一种更好?)
暂无答案!
目前还没有任何答案,快来回答吧!