草庐IT

reducer-combiner

全部标签

hadoop - 将 map reduce 作业的输出记录到文本文件

我一直在使用这个jobclient.monitorandprintjob()方法将mapreduce作业的输出打印到控制台。我的用法是这样的:job_client.monitorAndPrintJob(job_conf,job_client.getJob(j.getAssignedJobID()))输出结果如下(打印在控制台):13/03/0407:20:00INFOmapred.JobClient:Runningjob:job_201302211725_1013913/03/0407:20:01INFOmapred.JobClient:map0%reduce0%13/03/0407:

hadoop - 如何在 Hadoop Reducer 中创建一个新的唯一键

在HadoopReducer中,我想在特定条件下创建和发出新键,并且我想确保这些键是唯一的。我想要的伪代码是这样的:@Overrideprotectedvoidreduce(WritableComparablekey,Iterablevalues,Contextcontext)throwsIOException,InterruptedException{//dostuff://...//writeoriginalkey:context.write(key,data);//writeextrakey:if(someConditionIsMet){WritableComparableext

hadoop - 在 Reduce 阶段 (HADOOP) 多次迭代键/值?

如何对在HADOOP的Reduce阶段收到的键/值对进行多次迭代。我想做类似的事情,但它没有进入第2次迭代。for(Vectorvalue:values){sum+=value.getVector()[length-1];for(inti=1;i请给我解决方案???谢谢:) 最佳答案 您正在遍历values中的结果,一旦您遍历了它们,您就不能再这样做了。如果values中的总数不太大,您可以尝试将值设置为本地集合变量,然后您应该能够多次迭代它们。试试这个:Java:useEnumerationmultipletimes

hadoop - 伪分布数 map 和 reduce 任务

我是Hadoop的新手。我已经在伪分布式模式下成功配置了一个hadoop设置。现在我想知道选择map和reduce任务数量的逻辑是什么。我们指的是什么?谢谢 最佳答案 您无法概括要设置的映射器/缩减器的数量。映射器数量:您不能将映射器的数量显式设置为某个数量(有参数可以设置,但不会生效)。这取决于hadoop为给定的输入集创建的InputSplits的数量。您可以通过设置mapred.min.split.size参数来控制它。有关更多信息,请阅读InputSplit部分here.如果由于大量小文件而生成大量映射器,并且您想减少映射器

hadoop - 当 mapred.job.shuffle.input.buffer.percent=0.70 时,pig join 在 reducer 中出现 OutOfMemoryError

我们正在一个小表和一个大倾斜表之间进行简单的pig连接。由于另一个错误(pigskewedjoinwithabigtablecauses"Splitmetadatasizeexceeded10000000"),我们无法使用"usingskewed":(如果我们使用默认的mapred.job.shuffle.input.buffer.percent=0.70我们的一些reducer在shuffle阶段会失败:org.apache.hadoop.mapred.Task:attempt_201305151351_21567_r_000236_0:Mapoutputcopyfailure:ja

hadoop - 将值写入文件而不移动到 reducer

我有这样的记录输入,一|1|Y,b|0|N,c|1|N,d|2|Y,e|1|Y现在,在映射器中,我必须检查第三列的值。如果是“Y”,则该记录必须直接写入输出文件而不将该记录移动到reducer,否则即“N”值记录必须移动到reducer以进行进一步处理。所以,一|1|Y,d|2|Y,e|1|Y不应该去reducer但是b|0|N,c|1|N应该去reducer然后输出文件。我该怎么做? 最佳答案 你可能会做的是使用MultipleOutputs-clickhere将'Y'和'N'类型的记录从映射器中分离到两个不同的文件中。接下来,您

file - Hadoop:将文件或文件路径发送到 map reduce 作业

假设我有N个文件要使用hadoopmap-reduce处理,让我们假设它们很大,远远超过block大小并且只有几百个。现在我想处理这些文件中的每一个,让我们假设字数统计示例。我的问题是:创建一个输入为包含每个文件路径的文本文件的map-reduce作业与将每个文件直接发送到map函数(即连接所有文件)之间有什么区别并将它们插入不同的映射器[编辑]。这些都是有效的方法吗?它们有什么缺点吗?感谢您的及时回答,我已经详细描述了我的问题,因为我的抽象可能遗漏了一些重要主题:我的应用程序在HadoopHDFS上有N个小文件,我只需要处理每个文件。所以我使用映射函数将python脚本应用于每个文件

hadoop - 如何从 HDFS 执行 map reduce 程序(例如 wordcount)并查看输出?

我是Hadoop新手。我在eclipse中有一个简单的wordcount程序,它接受输入文件然后显示输出。但我需要从HDFS执行相同的程序。我已经为wordcount程序创建了一个JAR文件。任何人都可以让我知道如何进行吗? 最佳答案 您需要设置集群,即使是单节点集群。然后您可以从hadoop命令行运行您的.jar:jarRunsajarfile.UserscanbundletheirMapReducecodeinajarfileandexecuteitusingthiscommand.Usage:hadoopjar[mainCla

hadoop - 如何根据输入大小设置 reducer 的数量

我如何根据我的输入大小为我的mapreduce作业设置no.ofreducers。我在hive和pig中知道它如下hive.exec.reducers.bytes.per.reducerpig.exec.reducers.bytes.per.reducer我想在我的Map-Reduce工作中做类似的工作,请帮助我 最佳答案 我想到的一件事是在提交作业之前分析输入并根据输入大小设置reducer的数量。例如,如果您使用的是HDFS输入源,则有一个名为getContentSummary(http://hadoop.apache.org/

java - 将自定义值传递给 Reducer

我想要/需要将rowkey传递给Reducer,因为rowkey是预先计算的,并且在那个阶段信息不再可用。(Reducer执行一个Put)首先我尝试只使用内部类,例如publicclassMRMine{privatebyte[]rowkey;publicvoidstart(Configurationc,Dated){//calcrowkeybasedondateTableMapReduceUtil.initTableMapperJob(...);TableMapReduceUtil.initTableReducerJob(...);}publicclassMyMapperextends