草庐IT

reduce_dim

全部标签

hadoop - 如何限制在 map reduce 作业中发送到 reducer 的记录数?

我有一个超过300000行的文件,它是mapreduce作业的输入,我希望该作业仅处理该文件的前1000行。有什么好的方法可以限制发送到reducer的记录数吗?我只需要一个简单的identityreducer就可以写出我的输出。目前,reducer写出的行数与输入中的行数一样多。 最佳答案 首先,确保您的mapreduce程序设置为仅使用一个reducer。它必须明确设置,否则Hadoop可能会选择其他一些数字,然后就没有好的方法来协调reduce任务以确保它们发出的总数不超过1000。然后,您可以简单地在Reducer类中维护一

java - 向 reducer-MapReduce 发送多个参数

我编写了一个代码,它执行类似于SQLGroupBy的操作。我拿的数据集在这里:250788681419,20090906,200937,200909,619,SUNDAY,WEEKEND,ON-NET,MORNING,OUTGOING,VOICE,25078,PAY_AS_YOU_GO_PER_SECOND_PSB,SUCCESSFUL-RELEASEDBYSERVICE,17,0,1,21.25-10-1452-1452-17publicclassMyMapextendsMapper{publicvoidmap(LongWritablekey,Textvalue,Contextcon

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