我是Hadoop的新手。我正在尝试Wordcount程序。
现在尝试使用多个输出文件MultipleOutputFormat
。这个链接帮助我做到了。http://hadoop.apache.org/common/docs/r0.19.0/api/org/apache/hadoop/mapred/lib/MultipleOutputs.html
在我的司机课上
MultipleOutputs.addNamedOutput(conf, "even",
org.apache.hadoop.mapred.TextOutputFormat.class, Text.class,
IntWritable.class);
MultipleOutputs.addNamedOutput(conf, "odd",
org.apache.hadoop.mapred.TextOutputFormat.class, Text.class,
IntWritable.class);`
而我的降低班级变成了
public static class Reduce extends MapReduceBase implements
Reducer<Text, IntWritable, Text, IntWritable> {
MultipleOutputs mos = null;
public void configure(JobConf job) {
mos = new MultipleOutputs(job);
}
public void reduce(Text key, Iterator<IntWritable> values,
OutputCollector<Text, IntWritable> output, Reporter reporter)
throws IOException {
int sum = 0;
while (values.hasNext()) {
sum += values.next().get();
}
if (sum % 2 == 0) {
mos.getCollector("even", reporter).collect(key, new IntWritable(sum));
}else {
mos.getCollector("odd", reporter).collect(key, new IntWritable(sum));
}
//output.collect(key, new IntWritable(sum));
}
@Override
public void close() throws IOException {
// TODO Auto-generated method stub
mos.close();
}
}
一切正常,但是我得到了很多文件(对于每个map-reduce,一个奇数,一个偶数)
问题是:我怎样才能只有2个输出文件(奇数和偶数),以便每个map-reduce的每个奇数输出都被写入该奇数文件,并且偶数相同。
每个化简器使用OutputFormat写入记录。这就是为什么每个reducer会获得一组奇数和偶数文件的原因。这是设计使然,每个减速器都可以并行执行写入。
如果只需要单个奇数和单个偶数文件,则需要将mapred.reduce.tasks设置为1。但是性能会受到影响,因为所有映射器都将馈入单个reducer。
另一个选择是更改读取这些文件的过程以接受多个输入文件,或者编写将这些文件合并在一起的单独过程。
我正在使用Hadoop mapreduce编写代码来获取不同长度的子字符串。示例给出了字符串“ZYXCBA”和长度3。我的代码必须返回所有可能的字符串,长度为3(“ZYX”、“YXC”、“XCB”、“CBA”),长度为4(“ZYXC”、“YXCB”、“XCBA”),最后返回长度为5(“ZYXCB”、“YXCBA”)。 在map阶段,我做了以下工作: key=我想要的子字符串的长度 value=“Z
我用OpenCV编写了一个简单的应用程序。我把所有的jar文件放在/usr/local/hadoop/lib文件夹中。在运行hadoop作业时,我收到以下错误:
我决定创建自己的WritableComparable类来学习Hadoop如何使用它。因此,我创建了一个带有两个实例变量(orderNumber cliente)的Order类,并实现了所需的方法。我还为getters/setters/hashcode/equals/toString使用了Eclipse生成器。 相比较而言,我决定只使用orderNumber变量。 我创建了一个简单的MapReduc
问题内容: 我正在尝试使用Hadoop实现一个示例单词计数程序。我已经下载并安装了Hadoop 2.0.0。我想使用Eclipse来执行此示例程序,因为我认为稍后在我的真实项目中,我仅需使用Eclipse。 我找不到类似Hadoop的jar文件hadoop-core.jar以及其他必需的jar文件。我搜索了2.0 hadoop的所有文件夹,但找不到这些文件。这些相同的文件在Hadoop的1.0版本
本文向大家介绍 hadoop中Combiner的作用?相关面试题,主要包含被问及 hadoop中Combiner的作用?时的应答技巧和注意事项,需要的朋友参考一下 解答: combiner是reduce的实现,在map端运行计算任务,减少map端的输出数据。 作用就是优化。 但是combiner的使用场景是mapreduce的map和reduce输入输出一样。
我正在运行hadoop fs-getmerge,出现以下错误: 每次尝试使用不同的IP时都会出现此错误,在数据节点日志中我没有看到任何可疑错误或警告。 有什么想法吗?