【问题标题】:how to sort word count by value in hadoop? [duplicate]如何在hadoop中按值对字数进行排序? [复制]
【发布时间】:2013-08-26 13:34:39
【问题描述】:

嗨,我想学习如何在 hadoop 中按值对字数进行排序。我知道 hadoop 采用排序键,但不是按值。

我知道要对值进行排序,我们必须有一个分区器、分组比较器和一个排序比较器

但我在将这些概念一起应用以按值对字数进行排序时有点困惑。

我们是否需要另一个 map reduce 作业来实现相同的目的,或者需要一个组合器来计算出现次数,然后在这里排序并将相同的结果发送到 reducer?

谁能解释如何按值对字数进行排序?

【问题讨论】:

标签: hadoop mapreduce bigdata partitioner


【解决方案1】:

您需要进行第二个 mapreduce 作业。除非您根据总数(第一个 MR 工作所做的)得出结论,否则您怎么能想到按值排序(字数)?逻辑上不可能。

【讨论】:

  • 我的意思是根据出现次数进行排序
  • 是的。我也有同样的理解。要确定出现次数,您需要运行 MR 作业。只有在处理密钥结束时,才能确定出现的次数。当下一个键出现在 Reduce 任务上下文中的较早键时。所以不可能将单词作为键并按值排序。您需要将输出传输到另一个 MR 作业,并将该值用作第二个作业的键。
  • 我只是一个初学者,你的回答很有帮助。谢谢
  • 不客气。祝你一切顺利。
  • 您还可以通过标准 *nix 可执行文件(如sort)来管道输出,这样就可以正常工作。您可以对第二个字段进行数字排序。 cat part-* | sort -nk 2-n 是数字,-k 2 是字段 2。
【解决方案2】:

这称为二级排序。详情请参阅thisthis

【讨论】:

  • 二次排序无助于按问题中所要求的出现次数进行排序。不可能实现!。
  • @ruby :问题是关于根据值对 wordcount 作业的结果进行排序,这是每个单词的计数。是什么让您认为这是不可能实现的?
  • No..根据用户 cmets,很明显 user1585111 想要按出现次数排序。这不是二级排序可以做的。
猜你喜欢
  • 1970-01-01
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 2019-07-01
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
  • 2020-08-03
相关资源
最近更新 更多