草庐IT

biztalk-mapper

全部标签

hadoop - 如何在 Mapper 和 Reducer 类中共享变量?

我有一个要求,比如我想在mapper和reducer类之间共享一个变量。场景如下:-假设我的输入记录是类型A、B和C。我正在处理这些记录并相应地为map函数中的output.collect生成键和值。但与此同时,我还在映射器类中声明了3个staticint变量,以保持记录A、B和C类型的计数。现在这些变量将由各种map线程更新。完成所有maptask后,我想将这三个值传递给Reduce函数。如何实现?我尝试覆盖close()方法,但它会在每个映射函数执行后调用,而不是在所有映射函数执行完毕时调用。或者是否有任何其他方式来共享变量。我希望输出每种类型记录的总数以及我正在显示的任何已处理输

java - 控制 hadoop mapper 输出文件的数量

我有一份hadoop的工作。陈述工作后,我启动了一些映射器。每个映射器将一些文件写入磁盘,如part-m-00000、part-m-00001。据我了解,每个映射器创建一个零件文件。我有大量数据,所以必须有多个映射器,但我可以以某种方式控制此输出文件的数量吗?我的意思是,hadoop将启动,例如10个映射器,但只有三个部分文件?我找到了这篇文章Howdomultiplereducersoutputonlyonepart-fileinHadoop?但是有使用旧版本的hadoop库。我使用的类来自org.apache.hadoop.mapreduce.*而不是来自org.apache.ha

java - Hadoop java mapper -copyFromLocal 堆大小错误

作为我的Java映射器的一部分,我有一个命令在本地节点上执行一些代码并将本地输出文件复制到hadoopfs。不幸的是,我得到以下输出:ErroroccurredduringinitializationofVMCouldnotreserveenoughspaceforobjectheap我试过将mapred.map.child.java.opts调整为-Xmx512M,但不幸的是没有成功。当我通过ssh进入节点时,我可以毫无问题地运行-copyFromLocal命令。输出文件也很小,大约100kb。如有任何帮助,我们将不胜感激! 最佳答案

java - 将值从 Mapper 传递到 Reducer

我通过查找映射器正在处理的当前文件(以及其他一些东西)获得了少量元数据。我需要将这个元数据发送到reducer。当然,我可以让映射器在它生成的对中发出这个,但我想避免它.另外,再多约束一点,我不想使用DistributedCahce。那么,我还有其他选择吗?更准确地说,我的问题是双重的(1)我尝试通过在映射器的configure(JobConf)中执行job.set(Prop,Value)并在reducer的中执行job.get()来设置一些参数>配置(JobConf)。可悲的是,我发现它不起作用。另外,我很想知道为什么会出现这种行为。我的主要问题是(2)如何以“干净的方式”(如果可能

python - Hadoop 流 : PYTHONPATH not working when mapper runs

我在其中设置了PYTHONPATH,它也能正常工作,除非我运行map-reduce作业它没有说追溯(最近的调用最后):文件“/work/app/hadoop/tmp/mapred/local/taskTracker/hduser/jobcache/job_201203091218_0006/attempt_201203091218_0006_m_000020_0/work/./mapper.py”,第57行,在从src.utilities导入实用程序导入错误:没有名为src.utilities的模块java.lang.RuntimeException:PipeMapRed.waitOu

hadoop - 在 hadoop 中,跨 mapper reducer 多个输入保存状态的能力是什么意思?

问题的标题解释了我的问题是什么。我一直在阅读多篇文章,遇到这条线的答案Throughuseofthecombinerandbytakingadvantageoftheabilitytopreservestateacrossmultipleinputs,itisoftenpossibletosubstantiallyreduceboththenumberandsizeofkey-valuepairsthatneedtobeshuffledfromthemapperstothereducers.我无法理解这个概念。一个详尽的答案和一个例子的解释会很有帮助。如何培养直觉来理解这些概念?

java - 如何在 hadoop 作业中将 'Text' 作为 Mapper 输入键传递?

我的文件内容是这样的。TestKey,TestValueTestKey1,TestValue1我想将MapperKey作为TestKey传递,将MapperValue作为TestValue传递等等。所以我尝试编写CustomRecordReader来实现这一点。但是它会抛出类似CannotcastLongWritablewithText的错误。我如何将文本作为我的映射器输入键传递?非常感谢对此的任何帮助。谢谢,香卡 最佳答案 看来您需要将输入格式更改为KeyValueTextInputFormat并将分隔符设置为mapreduce.

r - Hadoop streaming reducer 到 mapper

我正在用R编写Hadoop流作业,我遇到了一个相当奇怪的情况,我找不到任何文档。我想运行一个直接传递给另一个映射器的缩减作业(不需要映射器)。是否可以在没有初始映射器的情况下直接在缩减作业之后堆叠映射作业?如果我编写一个身份映射器将输出传递到我的reduce作业,我能否将reduce输出传递给另一个映射器,如果可以,如何传递?我当前的代码是:$HADOOP_HOME/bin/hadoopjar/opt/cloudera/parcels/CDH-5.3.2-1.cdh5.3.2.p0.10/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoo

java - Hadoop Map-Reduce 并行执行 3 个 Mappers 并输出到 1 个 reducer

我有一个要求,我必须根据每个数据集的不同标准过滤3个不同的数据集,最后将它们联合起来并将它们聚合到一个reducer中。我有一个执行作业的Pig脚本,其中数据集的过滤按顺序发生。我想知道是否有可能为每个数据集并行运行Mappers,并将输出发送到1个reducer类。 最佳答案 尝试使用MultipleInputs和3个映射器来处理3个数据集。请参阅此链接以获取MultipleInputs的API-https://hadoop.apache.org/docs/stable/api/org/apache/hadoop/mapreduc

hadoop - 在 MapReduce 的一个 Mapper 中读取下一行

我有一个文本输入文件,它由换行符分隔。在每个映射器中,我需要读取我的键/值的下一行。例如,在这个数据中:L1L2L3我需要这样的东西:L1L2在下一个映射器中:L2L3提前致谢。 最佳答案 除了CustomInputFormat之外,您还可以像Map一样在集合中存储行前,并在每次下次调用时访问它例子: 关于hadoop-在MapReduce的一个Mapper中读取下一行,我们在StackOverflow上找到一个类似的问题: https://stackover