草庐IT

Iterator-reducer

全部标签

hadoop - 多个reducer如何在Hadoop中只输出一个部分文件?

在我的map-reduce作业中,我使用4个reducer来实现reducer作业。因此,通过这样做,最终输出将生成4个部分文件。:part-0000part-0001part-0002part-0003我的问题是如何将hadoop配置设置为仅输出一个部分文件,尽管hadoop使用4个reducer来工作? 最佳答案 这不是hadoop所期望的行为。但是您可以在这里使用MultipleOutputs来发挥您的优势。创建一个命名输出并在所有reducer中使用它以在一个文件本身中获得最终输出。它是javadoc本身建议如下:JobCo

hadoop - 如何在 Hadoop 的运行时确定任务是 reducer 还是 combiner?

如果使用MapReduce执行的操作不是可交换和关联的,则组合器不能与缩减器相同。例如,在计算平均值时,组合器对键的值求和,然后缩减器求和,然后将总和除以该键的值的总数。组合器的代码只有一点点修改。如果您可以对合并器和缩减器使用相同的类,并且有一段代码可以确定当前任务是合并器还是缩减器,那会怎么样?如果它发现它是一个reducer,则将总和除以计数。像这样:protectedvoidreduce(TextkeyIn,IterablevaluesIn,Contextcontext)throwsIOException,InterruptedException{doublesum=0.0d;

hadoop - reduce任务和reducer的区别

“reducer不同于reduce任务。reducer可以运行多个reduce任务”。有人可以用下面的例子解释一下吗?foo.txt:亲爱的,这是foo文件bar.txt:这是条文件我正在使用2个reducer。什么是reduce任务以及基于什么在reducer中生成多个reduce任务? 最佳答案 Reducer是一个类,包含如下reduce功能protectedvoidreduce(KEYINkey,Iterablevalues,Contextcontext)throwsIOException,InterruptedExcept

java - 反向排序 Reducer 键

以相反顺序将Map输出键获取到reducer的最佳方法是什么?默认情况下,reducer按键的升序接收所有键。非常感谢任何帮助或评论。简单来说,在正常情况下,如果map发出键1,4,3,5,2,reducer接收到与1,2,3,4相同的键,5。我希望reducer接收5,4,3,2,1。 最佳答案 在Hadoop1.X中,您可以使用JobConf.setOutputKeyComparatorClass为您的输出指定自定义比较器类.您的比较器必须实现RawComparatorinterface.对于Hadoop2.X,这是通过使用Jo

hadoop - reducer 和 mapper 可以在同一个数据节点上吗?

我已经开始阅读有关大数据和Hadoop的内容,所以这个问题对您来说可能听起来很愚蠢。这就是我所知道的。每个映射器处理少量数据并产生中间输出。在此之后,我们有洗牌和排序的步骤。现在,Shuffle=将中间输出移至各自的Reducer,每个Reducer都处理一个或多个特定的键。那么,一个数据节点是否可以在其中运行Mapper和Reducer代码,或者我们为每个节点设置不同的DN? 最佳答案 术语:数据节点用于HDFS(存储)。Mappers和Reducers(计算)在具有TaskTracker守护进程的节点上运行。每个tasktrac

hadoop - 在 Elastic Map Reduce 上将分布式缓存与 Pig 结合使用

我正在尝试在Amazon的ElasticMapReduce上运行我的Pig脚本(使用UDF)。我需要在我的UDF中使用一些静态文件。我在我的UDF中做了这样的事情:publicclassMyUDFextendsEvalFunc{publicDataBagexec(Tupleinput){...FileReaderfr=newFileReader("./myfile.txt");...}publicListgetCacheFiles(){Listlist=newArrayList(1);list.add("s3://path/to/myfile.txt#myfile.txt");retu

eclipse - 如何使用 Java -jar 命令运行 map reduce 作业

我使用Java编写了一个Mapreduce作业。设置配置Configurationconfiguration=newConfiguration();configuration.set("fs.defaultFS","hdfs://127.0.0.1:9000");configuration.set("mapreduce.job.tracker","localhost:54311");configuration.set("mapreduce.framework.name","yarn");configuration.set("yarn.resourcemanager.address","

sql - 修改配置单元查询以强制超过 1 个 reducer

WRT由c3.2xlarge实例组成的3节点集群。我有两张table。表U有大约6500万条记录,包含在其他领域的纬度和经度。L表有100万左右记录并包含经纬度。U存储为ORC表。任务是确定有多少U记录落在10英里半径内L中的位置。selectl.id,count(u.id)fromUu,Llwhere3960*acos(cos(radians(l.lat))*cos(radians(u.lat))*cos(radians(l.long)-radians(u.long))+sin(radians(l.lat))*sin(radians(u.lat)))位3960*acos(cos(ra

Python Streaming : how to reduce to multiple outputs?(尽管使用 Java 是可能的)

我读了HadoopinAction并发现在Java中使用MultipleOutputFormat和MultipleOutputs类,我们可以将数据减少到多个文件,但我不确定如何实现使用Python流式处理也是一样。例如:/out1/part-0000mapper->reducer\out2/part-0000如果有人知道,听说过,做过类似的事情,请告诉我 最佳答案 DumboFeathers,一组与Dumbo一起使用的java类(一个python库,可以轻松为hadoop编写高效的p​​ythonM/R程序),在其outputcla

hadoop - 如何根据我的映射器输出大小动态设置 reducer 的数量?

我知道可以通过将mapred.min.split.size设置为dfs.block.size来根据我的dfs拆分大小设置映射器的数量。类似地,如何根据我的映射器输出大小设置reducer的数量?PS:我知道下面的选项可以用来控制reducer的数量。mapred.tasktracker.reduce.tasks.maximummapred.reduce.tasks 最佳答案 作业提交后不能设置reducer的数量。以这种方式考虑-在映射器输出上调用分区器,它不需要知道要分区的缩减器。 关