当前位置: 首页 > 知识库问答 >
问题:

用于Hadoop的单词百分比程序

闾丘昊然
2023-03-14

我正在做一个著名的WordCount程序的稍微改进的版本,它应该输出单词占书的百分比。例如:

...
war 0.00002332423%
peace 0.0034234324%
...

基本上,我需要计算所有的单词,计算每一个单词的出现次数,将这组值除以总数。所以至少应该有两个工作:

作业1

    null
    null

>

  • 我希望避免重复原始输入,这就是为什么我要在job1中同时计算字数和总数。但我不明白如何避免在一个输出中混淆结果。我尝试使用multipleoutputs,但在本例中,映射器的结果不会进入reducer。

    Job2需要多个输入,而且它需要首先读取output2,因为如果没有总数,从output1读取结果是没有用的。我觉得这是使用MapReduce的错误方法(我们不应该使用任何类型的同步),但没有看到正确的方法。

    Job2中的映射器没有任何有用的功能,只会浪费处理器的时间。

  • 共有1个答案

    解修然
    2023-03-14

    关于使用单一工作的一个想法:

    total_count可以从第一个作业的映射阶段计算。实际上,它已经算作map_output_records。这是所有映射输出(key,value)对的总和。因此,如果您总是以1作为值,那么这个和就是您想要的,即文档中的总字数(带有重复)。

    现在,我不知道你能不能在减速器的配置中得到这个计数器。然后,您可以为每个单词输出(word,wordcount/map_output_records)对。我认为你可以通过以下方式做到这一点:

    context.getCounter("org.apache.hadoop.mapred.Task$Counter", "MAP_OUTPUT_RECORDS").getValue();
    
    reporter.getCounter("org.apache.hadoop.mapred.Task$Counter", "MAP_OUTPUT_RECORDS").getValue();
    
     类似资料:
    • 我有以下代码片段: 我的问题是,它真的计算出25%的概率在这里获胜吗?球员在这里获胜的几率真的是25%吗? 编辑: 我刚刚写了这个: 它非常不准确。它从大约0.15到0.3。 但是当我做更多的检查时(从(i 这是为什么?为什么100张支票不够精确?

    • 我需要根据该值被选择的百分比概率选择一个值。例如: 时间增量值a的10% 时间增量值b的20% 时间增量值c的30% 时间增量值d的40% 百分比加起来总是正好100% 我遇到过几种像这样的解决方案,但我确定它们不可能是正确的。以下是使用上述解决方案构建的示例程序: 输出: 预期输出: 我相信我需要使用某种算法将百分比转换为从0到99的刻度,以便随机数生成器可以准确地选择一个值。不过,我想不出如何

    • 我正在尝试制作一个“进度条”与动画,改变了酒吧的背景颜色。 该条在0%时应该以红色开始,当它穿过元素时,在100%时会变为绿色。我的工作是100%(不,颜色不是很好,但这是一个未来的问题)... null null 问题是(例如)在50%时,我无法使条“停止”在红色和绿色之间的50%过渡状态。 有没有一种方法可以计算颜色,因为它将在50%或让CSS停止过渡在一个特定的点? 你可以看到如果我有50%

    • 我想把线切成百分比。例如: -我的测试计划 -注册线程(此任务应为) -登录线程(此任务应为@) -搜索线程(此任务应为0) -添加新主题(此任务应为) 我怎么做这个分区? 谢谢

    • 问题内容: 我正在使用Elasticsearch 1.7.3累积用于分析报告的数据。 我有一个包含文档的索引,其中每个文档都有一个名为“ duration”的数字字段(请求花费了几毫秒)和一个名为“ component”的字符串字段。可能有许多具有相同组件名称的文档。 例如。 我想生成一份报告,说明每个组件: 此组件的所有“持续时间”字段的总和。 此总和在 所有 文档的总期限中所占的百分比。在我的

    • 本文向大家介绍在C ++ 找到折扣百分比的程序,包括了在C ++ 找到折扣百分比的程序的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将讨论一个找到折扣率的程序。 为此,我们将为您提供项目的标价和销售价格。我们的任务是计算并打印出该商品的折扣百分比。 示例 输出结果