草庐IT

Iterator-reducer

全部标签

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

java - 在 map reduce 中排序

我正在尝试在矩阵的映射缩减转置中实现一个简单的问题。输入:123456789期望的输出-147258789我的map输出是(0,1)(1,4),(2,7),(0,2)(1,5),(2,8)等等。我期望使用reducer方法方法作为0-{1,2,7},1-{4,5,8}并直接使用write以序列化形式写入对象.但是洗牌和排序没有给出所需的输出。在map方法之后,我得到的输出为0-{1,7,2},1-{5,4,8}。如果我的key是通用的,SS在这种情况下是如何工作的。还有这种情况的解决方案。 最佳答案 键在进入reduce阶段时将被排

python - PySpark(Python 2.7): How to flatten values after reduce

我正在使用带有自定义分隔符的SparkContext.newAPIHadoopFile读取多行记录文件。反正我已经准备好了,减少了我的数据。但是现在我想再次将key添加到每一行(条目),然后将其写入ApacheParquet文件,然后将其存储到HDFS中。这个图应该可以解释我的问题。我正在寻找的是红色箭头,例如写入文件前的最后一次转换。任何的想法?我尝试了flatMap,但时间戳和浮点值导致了不同的记录。Python脚本可以是downloadedhere和样本textfilehere.我在JupyterNotebook中使用Python代码。 最佳答案

java - 使用 map reduce 的行数

我每天都有几千个文件从其他人那里放到一个目录中,每个文件大约400MB到1GB大。我想统计目录中的总行数。我打算像下面这样做mapreduce映射器publicstaticclassLineMapperextendsMapper{privatefinalstaticIntWritableone=newIntWritable(1);publicvoidmap(Objectkey,Textvalue,Contextcontext)throwsIOException,InterruptedException{context.write("static_key",one);}}reducerp

Hadoop:mapper/reducer 对象的生命周期是如何工作的?

有一个mapper类和一个reducer类是用户实现的。在mapper的map()函数和reducer的reduce()函数中,我是否应该期望这些函数可以在同一个mapper/上调用我的多个线程reducer对象实例?还是保证多次调用在同一个线程中?或者每个对象只用于map()/reduce()一次调用,然后销毁,并为下一次调用创建一个新对象?谢谢! 最佳答案 在高层次上,您绝对不能期望它们在同一个线程中运行。它们实际上经常在不同的机器上运行,这正是MapReduce具有吸引力的地方(能够在大量硬件上并行运行作业)。即使你有一个单机