草庐IT

reducer-combiner

全部标签

python - Reducer 通过 sys.stdin 获取多个键?

我知道与Key关联的所有值都发送到单个Reducer。Reducer是否可以通过其标准输入一次获得多个键?我的用例是我将行拆分为键值对,然后我想将与某个键关联的所有行发送到API。我看到多个key同时发送到API。这是我的作业正在运行的一些示例代码映射器defmain():forlineinsys.stdinpart1=get_part1(line)part2=get_part2(line)key='%s-%s'%(part1,part2)print'%s\t%s'%(key,line)reducerdefmain():my_module.sent_to_api(sys.stdin)

hadoop - Hadoop 中的并行 Map Reduce 作业

我必须在hadoop1.0.4中运行许多(也许12个)作业。我希望这五个首先并行运行,当所有完成后并行运行其他4个作业,最后再次运行最后3个并行运行。我如何在hadoop1.0.4中设置它,因为我看到所有作业都相互运行而不是并行运行。 最佳答案 JobControlAPI可用于MR作业依赖。对于复杂的工作流程,Oozie或Azkaban被推荐。Here是OozievsAzkaban, 关于hadoop-Hadoop中的并行MapReduce作业,我们在StackOverflow上找到一个

algorithm - map reduce算法的并行效率计算公式是什么?

有没有公式可以告诉我们mapreduce算法的并行效率?(换句话说,我如何在数学上证明MR算法A优于MR算法B)我用谷歌搜索,但我只能在wiki上找到并行算法的加速和效率的定义。但如果有人能展示这些公式如何应用于MR算法,那就太好了 最佳答案 看看维基forBulkSynchronousParallelinshortBSP.RobBisselings的论文中包含另一个复杂度计算ParallelScientificComputation:AStructuredApproachUsingBSPandMPIBSP是对MapReduce的抽

java - AWS Elastic Map Reduce 中线程 "main"java.lang.NoClassDefFoundError 中的异常

我正在尝试使用JAR文件在AWSElasticMapReduce上运行hadoop作业。我正在使用一个名为EJMLhttps://code.google.com/p/efficient-java-matrix-library/wiki/EjmlManual的库.我使用project-->BuildPath-->ConfigureBuildPath-->AddExtrenalJarsinEclipse将它作为外部库包含在我的项目中。当我在本地计算机上运行该项目时,一切都很好。但是在AWS上我得到了错误,Exceptioninthread"main"java.lang.NoClassDef

hadoop - Map-reduce hadoop错误

我正在尝试运行map-reduce程序,但它在运行时出错。importjava.io.IOException;importjava.util.*;importjavax.naming.Context;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.io.*;importorg.apache.hadoop.mapred.*;importorg.apache.hadoop.util.*;publicclassWordCount{publicstaticclassMapextendsMapReduceBaseimplements

java - Hadoop map-reduce 编程

我是HadoopMap-reduce的新手。我的输入是许多文本文件,我想编写map-reduce程序,这样它将在一个输出文件中写入所有文件名和与文件名相关的句子,其中我只想从映射器发出文件名(键)和关联的句子(值),缩减器将收集键和所有值,并在输出中写入文件名及其关联的句子。映射器和缩减器:publicvoidmap(Textkey,Textvalue,OutputCollectoroutput,Reporterreporter)throwsIOException{StringTokenizeritr=newStringTokenizer(value.toString(),",");S

hadoop - 如何使用 MapReduce 映射器将数据统一分发到 reducer?

我对MapReduce仅有较高的理解,但对实现中允许的内容有一个具体的问题。我想知道Mapper在reducer之间均匀分布给定的键值对是否容易(或可能)。可能是这样的(k,v)->(proc_id,(k,v))其中proc_id是处理器的唯一标识符(假设每个键k都是唯一的)。核心问题是,如果reducer的数量不固定(根据输入的大小动态确定;这在实践中是如何完成的吗?),那么映射器如何生成合理的ID?一种方法是让映射器知道键值对的总数。MapReduce是否允许映射器获得此信息?另一种方法是执行一些少量的额外计算。执行此操作的适当方法是什么? 最佳答案

hadoop - 如何在一个reducer中同时处理所有map输出?

我编写了一个MapReduce应用程序,其中映射器以下列形式生成输出:key1value1key2value2keynvaluen我想做的是对我的reducer中所有键的所有值求和。基本上:sum=value1+value2+value3这可能吗?据我了解,目前为每个键/值对单独调用reducer。我想到的一个解决方案是拥有一个私有(private)总和变量,用于维护迄今为止在其中的值过程的总和。然而,在那种情况下,我怎么知道所有对都已处理,以便可以将总和写出到收集器? 最佳答案 如果您不需要key,则使用单个常量key。如果必须有

hadoop - Reducer 可以一次拥有多个键吗?

通过mapper我制作了多个键,然后将它们传递给reducer以执行一些功能。有没有办法可以一次将多个key发送到同一个reducer?实际上,我一次需要与单个reducer中的键关联的值。提前致谢! 最佳答案 如果你想要的只是将多个键分区到同一个reducer,那么你只需编写一个定制的Partitioner并为要一起分区的键生成相同的int。因为您会意识到分区是不够的,并且您还希望将多个key发送到您的reduce(Kk,Iterator)同时,你可能还需要实现一个比较器,让比较的多键相等,将比较器设置为job.setGroupi

hadoop - 如何在 Hadoop 的 map-reduce 作业中通过自定义比较器对键进行排序?

考虑这个类:(来自Hadoop:权威指南第3版):importjava.io.*;importorg.apache.hadoop.io.*;publicclassTextPairimplementsWritableComparable{privateTextfirst;privateTextsecond;publicTextPair(){set(newText(),newText());}publicTextPair(Stringfirst,Stringsecond){set(newText(first),newText(second));}publicTextPair(Textfir