草庐IT

reduce_max

全部标签

java - 链接 Map Reduce 作业时出错

我的MapReduce结构publicclassChainingMapReduce{publicstaticclassChainingMapReduceMapperextendsMapper{publicvoidmap(Objectkey,Textvalue,Contextcontext)throwsIOException,InterruptedException{//code}}}publicstaticclassChainingMapReduceReducerextendsReducer{publicvoidreduce(Textkey,Iterablevalues,Context

java - Hadoop 无法设置 Reducers > 1

我正在使用Hadoop完成一项大学作业,我的代码可以正常工作,但是我遇到了一个小问题。我正在尝试将reducer的数量设置为19(如文档所建议的那样为0.95*capacity)。但是,当我在任务跟踪器中查看我的工作时,它显示总共有1个reducer。System.err.println("here");job.setNumReduceTasks(19);System.err.println(job.getNumReduceTasks());预期产量:here19但在最终输出中我得到:12/05/1611:10:54INFOmapred.JobClient:Data-localmapt

eclipse - 使用 Eclipse 开发、测试和调试 Hadoop map/reduce 作业

在Eclipse中开发JavaMapReduce作业有哪些选择?我的最终目标是在我的亚马逊Hadoop集群上运行我开发的map/reduce逻辑,但我想先在我的本地机器上测试逻辑并在将其部署到更大的集群之前在其中放置断点。我看到有一个用于Eclipse的Hadoop插件看起来很旧(如果我错了请纠正我),一家名为Karmasphere的公司有一些用于ecplise和Hadoop的东西,但我不确定它是否仍然可用。您如何使用Eclipse开发、测试和调试您的map/reduce作业? 最佳答案 我通过以下方式在Eclipse中开发Cass

java - 使用 Map Reduce 的最小最大计数

我开发了一个Mapreduce应用程序来确定用户第一次和最后一次发表评论的时间以及该用户根据DonaldMiner写的书发表的评论总数。但我的算法的问题是reducer。我已经根据用户ID对评论进行了分组。我的测试数据包含两个用户标识,每个用户标识在不同日期发布3条评论。因此总共有6行。所以我的reducer输出应该打印两条记录,每条记录显示用户第一次和最后一次评论以及每个用户ID的总评论。但是,我的reducer正在打印6条记录。有人可以指出以下代码有什么问题吗?importjava.io.IOException;importjava.text.SimpleDateFormat;im

java - Driver 中的 job.setOutputKeyClass 和 setOutputValueClass 与 reducer 的 context.write 方法不匹配,程序仍然运行正常。怎么办?

驱动代码:publicclassWcDriver{publicstaticvoidmain(String[]args)throwsIOException,InterruptedException,ClassNotFoundException{Configurationconf=newConfiguration();Jobjob=newJob(conf,"WcDriver");job.setJarByClass(WcDriver.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(LongWritable.cl

java - 在 map reduce 中使用自定义分区程序应该遵循哪个逻辑来解决这个问题

如果文件中的键分布是99%的单词以'A'开头,1%的单词以'B'到'Z'开头,并且您必须计算每个字母开头的单词数,您将如何计算有效地分发您的key? 最佳答案 解决方案1:我认为要走的路是组合器,而不是分区器。组合器将聚合以字母“A”开头的单词的本地总和,然后将部分总和(而不是始终为数字1)发送给缩减器。解决方案2:但是,如果您坚持为此使用自定义分区器,您可以简单地在一个单独的reducer中处理以字母“A”开头的单词,而不是所有其他单词,即,专用一个reducer仅适用于以字母“A”开头的单词。解决方案3:此外,如果您不介意“作弊

hadoop - 如何在 HDFS hadoop Map-Reduce 中处理增量更新

我在HDF中有结构化的基本文本文件,其中包含这样的数据(在file.txt中):OgId|^|ItemId|^|segmentId|^|Sequence|^|Action|!|4295877341|^|136|^|4|^|1|^|I|!|4295877346|^|136|^|4|^|1|^|I|!|4295877341|^|138|^|2|^|1|^|I|!|4295877341|^|141|^|4|^|1|^|I|!|4295877341|^|143|^|2|^|1|^|I|!|4295877341|^|145|^|14|^|1|^|I|!|123456789|^|145|^|14|

java - Hadoop 选项没有任何效果(mapreduce.input.lineinputformat.linespermap、mapred.max.map.failures.percent)

我正在尝试实现一个MapReduce作业,其中每个映射器将占用150行文本文件,并且所有映射器将同时运行;此外,无论有多少maptask失败,它都不应该失败。这里是配置部分:JobConfconf=newJobConf(Main.class);conf.setJobName("Mymapreduce");conf.set("mapreduce.input.lineinputformat.linespermap","150");conf.set("mapred.max.map.failures.percent","100");conf.setInputFormat(NLineInputF

java - hadoop MapReduce : find max key value pair from output of mapper

这听起来像是一项简单的工作,但使用MapReduce似乎并不那么简单。我有N个文件,其中每个文件只有一行文本。我希望Mapper输出键值对,如,其中'score'是根据文本行计算的整数。作为旁注,我正在使用以下代码片段来执行此操作(希望它是正确的)。FileSplitfileSplit=(FileSplit)reporter.getInputSplit();StringfileName=fileSplit.getPath().getName();假设映射器正确地完成了它的工作,它应该输出N个键值对。现在的问题是我应该如何对Reducer进行编程以输出具有最大“分数”的一对键值对?据我所

hadoop - Hadoop Map Reduce 链接中的数据共享

是否可以在连续的reducer和mapper之间共享一个值?或者是否可以将第一个reducer的输出存储到内存中,第二个mapper可以从内存中访问它?问题是,我写了一个链式mapreducer,比如Map1->Reducer1-->Map2-->Reducer2。Map1和Map2正在读取相同的输入文件。Reduce1正在导出一个值,假定“X”作为其输出。我需要“X”和Map2的输入文件。我们如何在不读取Reduce1的输出文件的情况下执行此操作?是否可以将“X”存储在内存中以供Mapper2访问? 最佳答案 每个作业都相互独立,