繁体   English   中英

使用Python和Hadoop Streaming查找Top-K

[英]Finding Top-K using Python & Hadoop Streaming

所以我有一个前一个作业的输出文件格式(.txt文件)

"   145
"Defects,"  1
"Information    1
"Plain  2
"Project    5
"Right  1
#51302] 1
$5,000) 1
&   3
'AS-IS',    1
(   1
("the   1

每行的左侧是我从文档中读取的单词,每行右侧的数字是我计算它的次数。 我想使用Python和Hadoop Streaming创建另一个map reduce作业来查找top-k值。 在这种情况下,我们说5。 我无法看到映射器应该做什么。

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

你几乎走在正确的轨道上。 将您的单词视为密钥,将计数视为映射器任务的值。 如果在输入文件中,您可以获得同一个单词和不同计数的多个条目,那么您无法从中取出前K个。 然后你必须聚合数据,然后找出前K。 这应该在减速机中完成。 由于reducer将接收相同密钥的所有数据,它可以聚合完整数据并取出前K.但是必须有另一个链式映射reduce以找出所有记录中的前K个,其中你将有1个reducer for找到最重要的元素。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM