草庐IT

java - MapReduce 中的 N 轮减少

我正在使用Map/Reduce算法,我试图在单个reducer中合并两棵或多棵树(稍后将尝试微调在一个reducer中合并的树的数量)。我正在尝试使用Nreducerrounds来实现这个算法。我曾尝试使用ChainReducer解决这个问题,但它只允许定义一个reducer(我可能能够使用循环创建该链来实现)。此外,我想定义自定义逻辑来指定何时发出结果。这是我的算法架构图: 最佳答案 您可以使用作业控制,您可以按顺序执行多个mapreduce作业。在您的情况下,reducer中有三个阶段,而映射器中只有一个阶段。您可以拥有三个ma

hadoop - 如何在 MRUnit 中使用 avro 参数测试 reducer ?

我正在尝试测试下面的ReducerReducer,AvroKey,NullWritable>出于这些目的,我在测试中使用了下一个代码:CustomReducerreducer=newCustomReducer();reduceDriver=newReduceDriver,AvroKey,NullWritable>();Jobjob=newJob();reduceDriver=ReduceDriver.newReduceDriver(reducer).withConfiguration(job.getConfiguration());reduceDriver.setReducer(red

sql - Hive 查询执行问题

执行hive查询时,这里是输出,想知道“Map1”和“Reducer2”,1和2是什么意思?Map1:21/27Reducer2:0/1Map1:22/27Reducer2:0/1Map1:23/27Reducer2:0/1Map1:24/27Reducer2:0/1Map1:26/27Reducer2:0/1Map1:27/27Reducer2:0/1Map1:27/27Reducer2:1/1提前致谢,林 最佳答案 Hive查询被MapReduce框架解释为Map-Reduce任务。该任务根据输入获得分配的映射器和缩减器。当任务

hadoop - 在reducer的cleanup()中调用context.write()有什么用

在reduce()和cleanup()中执行context.write()的区别?我在某处读到只有在temp_dir中的输出移动到指定的输出目录后才会调用清理?还有如何在MR作业中使用treeMap的例子? 最佳答案 reducer任务有如下调用方法:run():setup()foreachrecord:reduce()cleanup()如您所见,setup()和cleanup()在每个reducer任务中只被调用一次,而reduce()会为每条记录调用(一条记录是键和值)。在reducer中你一次只有一个键和它的值。在清理中,您可

hadoop程序只写逻辑,只写reducer的程序

编写一个mapreduce程序来打印文本文档中出现频率最高的单词。可以固定阈值,输出频率超过阈值的词。例如:如果thereshold=100,并且“is”在文档中出现了150次,则必须在输出中打印它。program:packageorg.myorg;importjava.io.IOException;importjava.util.*;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.conf.*;importorg.apache.hadoop.io.*;importorg.apache.hadoop.mapreduce.*

java - Hadoop在Maper或Reducer端使用java连接两个不同的数据集

我有两个不同的数据集。***Comments.csv:***iduserid***Posts.csv-***idpost_typecreationdatescoreviewcountowneruseridtitleanswercountcommentcount我有显示名称,但没有。获得最高声誉的用户创建的帖子数。我知道MapReduce如何使用单个文件工作的代码。我知道如何为Job设置多个文件。但是我不知道如何在Mapper级别加入不同的数据集。我不确定我是否可以用一个Mapper连接这两个数据集。publicvoidmap(Objectkey,Textvalue,Contextcon

java - Reducer 将 Mapper 输出写入输出文件

我正在学习Hadoop并尝试执行我的Mapreduce程序。所有Map任务和Reducer任务均已完成,但Reducer将Mapper输出写入输出文件。这意味着根本没有调用Reduce函数。我的示例输入如下所示1,a1,b1,c2,s2,d预期的输出如下1a,b,c2s,d下面是我的程序。packagepatentcitation;importjava.io.IOException;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.FileSystem;importorg.apache.hadoo

hadoop - Reducer 数量和输出顺序

当我使用函数job.setNumReduceTasks(1);时,我得到按键排序的输出。但是,当我删除此功能时,输出不会按键排序。那么,当我们有多个reducer任务时,我们是否应该期望从reducer获得排序的输出?谢谢。 最佳答案 输出在单个Reducer中按键排序。然而,默认的Partitioner是哈希函数的结果,因此虽然每个文件在使用多个Reducer时都会被排序,但一个文件不会是最后一个文件的排序延续。例如:我们有一个包含三个Reducer的字数统计作业。映射器输出:(A,1)(zebra,1)(bat,1)(zebra

java - 在hadoop中没有reducer的情况下限制多输出中映射器的数量

您好,我有一个从HBase读取记录并将其写入文本文件的应用程序HBase表有200个区域。我在映射器类中使用MultipleOutputs来写入多个文件,并且我正在根据传入的记录创建文件名。我正在制作40个唯一的文件名。我能够正确获取记录,但我的问题是,当mapreduce完成时,它会创建40个文件以及2k个具有正确名称但附加的额外文件用m-000等等。这是因为我有200个区域,MultipleOutputs为每个映射器创建文件,所以200个映射器,每个映射器有40个唯一文件,所以它创建40*200个文件。如果没有自定义分区程序,我不知道如何避免这种情况。有什么方法可以强制将记录写入所

hadoop - 在字数统计程序中使用 2 个 reducer 的输出

假设具有键“the”、“sound”、“is”的键值对由reducer1处理,而具有键“it”、“right”、“sounds”的键值对是由reducer2处理。两个reducer的输出是什么?每个reducer的输出文件会先排序然后合并再排序吗?当reducer收到它们时,它是否已经按字母顺序排序,以便reducer1收到“is”、“it”、“right”,reducer2收到“the”、“sound”、“sounds”? 最佳答案 回答您的问题:reducer的输出将是其出现的单词和计数。在不同键上工作的reducer的输出永远