import
java.io.IOException;
import
org.apache.hadoop.conf.Configuration;
import
org.apache.hadoop.fs.Path;
import
org.apache.hadoop.io.LongWritable;
import
org.apache.hadoop.io.NullWritable;
import
org.apache.hadoop.io.Text;
import
org.apache.hadoop.mapreduce.Job;
import
org.apache.hadoop.mapreduce.Mapper;
import
org.apache.hadoop.mapreduce.Reducer;
import
org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import
org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import
org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public
class
wzl189_distinct {
public
static
class
MyMapper
extends
Mapper<Object, Text, Text, NullWritable> {
Text outKey =
new
Text();
@Override
public
void
map(Object key, Text value, Context context)
throws
IOException, InterruptedException {
String tmp[] = value.toString().split(
" "
);
if
(tmp.length !=
2
)
return
;
outKey.set(tmp[
0
]);
context.write(outKey, NullWritable.get());
}
}
public
static
class
MyReducer
extends
Reducer<Text, NullWritable, LongWritable, NullWritable> {
long
myCount = 0l;
@Override
public
void
reduce(Text key, Iterable<NullWritable> values,
Context context)
throws
IOException, InterruptedException {
++myCount;
}
@Override
public
void
cleanup(Context context)
throws
IOException,
InterruptedException {
context.write(
new
LongWritable(myCount), NullWritable.get());
};
}
public
static
void
main(String[] args)
throws
Exception {
Configuration conf =
new
Configuration();
if
(args.length !=
2
) {
System.err.println(
"Usage: <in> <out>"
);
System.exit(
2
);
}
conf.set(
"mapred.child.java.opts"
,
"-Xmx350m -Xmx1024m"
);
@SuppressWarnings
(
"deprecation"
)
Job job =
new
Job(conf,
"wzl189_distinct"
);
job.setNumReduceTasks(
1
);
job.setInputFormatClass(TextInputFormat.
class
);
job.setJarByClass(wzl189_distinct.
class
);
job.setMapperClass(MyMapper.
class
);
job.setMapOutputKeyClass(Text.
class
);
job.setMapOutputValueClass(NullWritable.
class
);
job.setReducerClass(MyReducer.
class
);
job.setOutputKeyClass(Text.
class
);
job.setOutputValueClass(NullWritable.
class
);
FileInputFormat.addInputPath(job,
new
Path(args[
0
]));
FileOutputFormat.setOutputPath(job,
new
Path(args[
1
]));
System.exit(job.waitForCompletion(
true
) ?
0
:
1
);
}
}
相关推荐
MapReduce实现文档数据去重 MapReduce是一种编程模型和相关实现,用于大规模数据处理,广泛应用于大数据处理领域。本文将介绍如何使用MapReduce实现文档数据去重,通过环境配置、编程、测试等步骤,实现文档数据...
大数据Mapreduce编程实现文件合并和去重操作 大数据处理技术中的MapReduce编程是处理大量数据的一种常用方法。本实验报告将介绍如何使用MapReduce编程实现文件合并和去重操作,并对输入文件进行排序和数据挖掘。 ...
在这个"007_hadoop中MapReduce应用案例_1_数据去重"的主题中,我们将深入探讨如何利用MapReduce解决数据去重的问题。这个案例可能涉及到对大数据集进行清洗和预处理,以确保数据的准确性和一致性。 首先,我们来看`...
总结起来,这个实验不仅介绍了MapReduce的基本概念,还展示了如何用Java实现MapReduce任务,以解决实际问题。通过这种方式,学习者能够深入理解大数据处理中的并行化计算原理,为后续更复杂的分布式数据处理任务打下...
通过实践,学生能够加深对MapReduce分区、分布式运行等核心概念的理解,并锻炼解决问题的能力。 总的来说,这个实验项目全面地覆盖了MapReduce的基础知识和实践操作,对于提升学生的Hadoop技能和大数据处理能力有着...
### Hadoop MapReduce作业卡死问题的解决方法 #### 一、问题背景 在使用Hadoop MapReduce进行大规模数据处理的过程中,遇到了一个棘手的问题——部分MapReduce作业长时间卡死,严重影响了系统的运行效率和资源利用...
在实践中,我们可以使用 MapReduce 来解决各种大数据处理问题。以下是一些 MapReduce 项目实践: * WordCount 程序编写及代码分析 * 新建一个 MapReduce 工程 * 修改源程序 * 上传处理数据 * 运行以及结果分析 * ...
MapReduce 由 Google 公司的 Jeffrey Dean 和 Sanjay Ghemawat 开发,旨在解决大规模数据处理问题。 MapReduce 的主要功能是将大规模数据集分解成小的“桶”,然后通过多个处理器、线程或独立系统并行执行处理。Map...
在这个实验中,我们将学习如何利用MapReduce编程解决实际问题,包括数据去重、数据排序和信息挖掘。 **一、MapReduce编程基础** MapReduce的核心在于两个主要阶段:Map阶段和Reduce阶段。Map阶段将输入数据分解成...
通过这个实验,学生可以掌握基本的MapReduce编程方法,并了解如何使用MapReduce解决一些常见的数据处理问题,包括数据去重、数据排序和数据挖掘等。 实验平台 实验平台已经配置完成的Hadoop伪分布式环境。Hadoop是...
这样的社群支持对于解决在实际工作中遇到的问题是非常有帮助的。 综上所述,文档详细介绍了MapReduce数据分析的实战技巧和步骤,通过具体的例子展示了如何利用Hadoop进行大规模数据处理。文中不仅包含了MapReduce的...
使用如Hadoop的YARN和HBase的监控工具,可以跟踪作业执行情况,及时发现和解决问题。 通过理解以上知识点,你可以有效地在基于Hadoop和HBase的环境中实现大规模海量数据去重,从而充分利用分布式系统的强大处理能力...
1. **解决问题的思路**:描述如何设计Map函数和Reduce函数来实现上述功能,包括键值对的选取和处理逻辑。 2. **实验内容与完成情况**:详细说明每一步的操作过程,如代码编写、提交任务、查看结果等。 3. **出现的...
哈希碰撞(两个不同的输入得到相同的哈希值)是哈希表的主要问题,解决方法包括开放寻址法、链地址法和再哈希法等。在KNN算法中,哈希可以用来快速定位邻居候选集,降低计算复杂度。 **MapReduce** MapReduce是由...
去重通常需要考虑数据量巨大,传统单机处理方式可能无法在可接受的时间内完成任务,因此MapReduce模型通过其可扩展的分布式计算能力,可以有效地解决这一问题。 ### MapReduce程序设计 #### Map阶段 Map阶段是...
通过MapReduce处理图数据不仅可以解决大规模图的问题,还能有效提升算法的执行效率。 #### 六、EM算法在文本处理中的应用 ##### 6.1 期望最大化算法 期望最大化(EM)算法是一种广泛应用于统计建模和机器学习领域的...
本项目实现了利用哈希技术和MapReduce框架对大规模数据集执行KNN算法的高效解决方案。 哈希技术在大数据处理中的作用主要体现在快速查找和数据去重上。哈希函数能够将任意大小的数据映射为固定长度的哈希值,通过...
2. 掌握用MapReduce解决一些常见的数据处理问题,包括数据去重、数据排序和数据挖掘等。 实验平台: 已经配置完成的Hadoop伪分布式环境。 实验内容和要求: 1. 编程实现文件合并和去重操作对于两个输入文件,即...
在IT领域,大数据处理是一项关键任务,而Hadoop是一个广泛使用的开源框架,专门设计用于处理和存储海量数据。本教程将深入探讨如何利用...记住,实践是最好的老师,动手操作,多尝试,你会在解决问题的过程中不断成长。
这个案例也展示了如何将实际问题转化为MapReduce模型能解决的问题,并通过代码实现来解决这个问题。 需要注意的是,在实际的Hadoop集群操作中,MapReduce程序的部署和执行需要考虑集群的配置和资源分配,而本案例仅...