首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python和Hadoop Streaming查找Top-K

使用Python和Hadoop Streaming查找Top-K
EN

Stack Overflow用户
提问于 2016-09-25 07:04:06
回答 1查看 825关注 0票数 1

因此,我有一个来自以前作业的这种格式的输出文件(.txt文件)

代码语言:javascript
复制
"   145
"Defects,"  1
"Information    1
"Plain  2
"Project    5
"Right  1
#51302] 1
$5,000) 1
&   3
'AS-IS',    1
(   1
("the   1

每一行的左边是我从文档中读取的单词,每行右边的数字是我数过它的次数。我想创建另一个map reduce作业,使用Python和Hadoop流来查找top-k值。在这种情况下,假设是5。我很难想象映射器应该做什么。

我是否应该解析每一行,并将每个单词和计数附加到列表中。然后,从这些列表中,我是否将获取前k个值并将其发送到reducer?然后reducer读取所有这些列表并只返回top-k值?如果有人可以提供一些建议,通过伪代码或纠正我,如果我在错误的道路上,将不胜感激。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-25 22:57:13

你几乎走上了正确的道路。考虑您的单词作为关键字,计数作为映射器任务的值。如果在您的输入文件中,您可以获得相同单词的多个条目和不同的计数,那么您不能从中提取前K。然后你必须聚合数据,然后找出top K。这将在减速机中完成。由于reducer将接收同一键的所有数据,因此它可以聚合完整的数据并取出top K。但是,必须有另一个链式map reduce才能在所有记录中找出top K,其中您将有一个reducer来查找top元素。

但是,如果您的输入文件只有一次键条目,您可以只从所有映射器中发出top K,然后将其发送到1 Reducer,以便从所有map条目中找出top K。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39681761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档