hadoop求最大值问题,代码比求最值前N个要简单一些,因为直接使用LongWritable类型,不需要自定义hadoop对象进行比较,所以直接覆盖map和reduce方法,并且覆盖cleanup方法,这是在map和reduce都执行完成之后才会执行的方法,只需要把最大值写入即可
public class MySuper {
public static void main(String[] args) throws Exception {
final String INPUT_PATHs = "hdfs://chaoren:9000/seq100w.txt";
final String OUT_PATHs = "hdfs://chaoren:9000/out";
Configuration conf = new Configuration();
final FileSystem fileSystem = FileSystem.get(new URI(INPUT_PATHs), conf);
final Path outPath = new Path(OUT_PATHs);
if(fileSystem.exists(outPath)){
fileSystem.delete(outPath, true);
}
final Job job = new Job(conf , MySuper.class.getSimpleName());
FileInputFormat.setInputPaths(job, INPUT_PATHs);
job.setMapperClass(MyMapper2.class);
job.setReducerClass(MyReducer2.class);
job.setOutputKeyClass(LongWritable.class);
job.setOutputValueClass(NullWritable.class);
FileOutputFormat.setOutputPath(job, outPath);
job.waitForCompletion(true);
}
}
class MyMapper2 extends Mapper<LongWritable, Text, LongWritable, NullWritable>{
long max = Long.MIN_VALUE;
protected void map(LongWritable k1, Text v1, Context context) throws java.io.IOException ,InterruptedException {
final long temp = Long.parseLong(v1.toString());
if(temp>max){
max = temp;
}
};
protected void cleanup(org.apache.hadoop.mapreduce.Mapper<LongWritable,Text,LongWritable, NullWritable>.Context context) throws java.io.IOException ,InterruptedException {
context.write(new LongWritable(max), NullWritable.get());
};
}
class MyReducer2 extends Reducer<LongWritable, NullWritable, LongWritable, NullWritable>{
long max = Long.MIN_VALUE;
protected void reduce(LongWritable k2, java.lang.Iterable<NullWritable> arg1, org.apache.hadoop.mapreduce.Reducer<LongWritable,NullWritable,LongWritable,NullWritable>.Context arg2) throws java.io.IOException ,InterruptedException {
final long temp = k2.get();
if(temp>max){
max = temp;
}
};
protected void cleanup(org.apache.hadoop.mapreduce.Reducer<LongWritable,NullWritable,LongWritable,NullWritable>.Context context) throws java.io.IOException ,InterruptedException {
context.write(new LongWritable(max), NullWritable.get());
};
}
分享到:
相关推荐
本教程将详细讲解如何使用Java编程语言操作Hadoop的MapReduce来计算整数序列中的最大值和最小值,这对于数据分析和处理任务来说是非常基础且实用的技能。 首先,我们需要理解MapReduce的工作原理。MapReduce是一种...
在本实验"MapReduce编程训练(三)"中,我们主要关注的是利用Hadoop MapReduce框架处理大数据,特别是针对全球气温记录的统计分析。实验的主要目标是实现以下几个关键知识点: 1. **自定义数据类型(Custom Data ...
(1)统计全球每年的最高气温和最低气温。 (2)MapReduce输出结果包含年份、最高气温、最低气温,并按最高气温降序排序。如果最高气温相同,则按最低气温升序排序。 (3)使用自定义数据类型。 (4)结合Combiner和自定义...
"Hadoop 分析统计学生考试成绩" 本资源综合了 Hadoop 分析统计学生考试成绩的实现,涵盖了从开发环境到项目结构、代码文件说明、程序运行方式等方面。 一、开发环境 项目需要 Win 10 64 位或 macOS High Sierra ...
或者使用MapReduce计算大规模数据集的统计指标,如平均值、最大值和最小值。 5. **Hadoop生态系统**:Hadoop并不是孤立的,它有一个丰富的生态系统,包括Hive(用于数据仓库)、Pig(提供高级数据处理语言)、Spark...
在这个问题中,我们关注的是一个特定的int数组{1, 3, 5, -2, 4, 6},我们需要计算这个数组中的最大值、最小值、元素和以及平均值。这些都是数据分析和算法基础中的关键概念。 1. **最大值**:数组中的最大值是指...
通过这个实战项目,学习者不仅可以掌握Java操作Hadoop MapReduce的基本方法,还能深入了解大数据处理流程,以及如何从海量气象数据中提取有价值的信息。此外,对于提升数据处理能力和分布式计算的理解也大有裨益。...
在本篇"Hadoop学习笔记(三)"中,我们将探讨如何使用Hadoop的MapReduce框架来解决一个常见的问题——从大量数据中找出最大值。这个问题与SQL中的`SELECT MAX(NUMBER) FROM TABLE`查询相似,但在这里我们通过编程...
这一步骤通常包括最大值查找,因为我们要找的是每年的最高气温。 5. **结果输出**:最后,reduce阶段的结果将写回到HDFS,形成一个新的文件,包含每年的最高气温记录。 【标签】"hadoop"表明这个示例代码完全基于...
4. **重复**:重复第2步和第3步,直到质心不再发生变化或达到最大迭代次数。 **4.1.2 K-Means在MapReduce框架中的适应** 为了提高K-Means算法的计算效率,可以在MapReduce框架中实现该算法。具体步骤如下: - **...
- hadoop.logfile.size设定日志文件的最大大小为10M。 - hadoop.logfile.count设置日志文件数量为10。 - io.file.buffer.size用于设定流文件的缓冲区大小,通常为4K或8K。 - io.bytes.per.checksum用于设置校验...
NCDC作为全球最大的气象和气候数据存储库之一,提供了丰富的气象观测记录。这些文件如010010-99999-1992.gz至010017-99999-1991.gz,代表了不同地区的气象观测数据,以年份为单位进行组织,格式为gzip压缩的文本文件...
4. **hadoop.logfile.size**: 日志文件的最大大小,这里设置为10MB。 5. **fs.default.name**: 指定默认的文件系统,如`file:///`表示本地文件系统,`hdfs:///`表示HDFS。 6. **fs.trash.interval**: 设定文件回收...
如果需要找出整个数据集中的最高温度,而不是每个日期的最高温度,可以在Reducer的最后阶段进行全局比较,找出最大值。 在Hadoop01Demo这个示例中,可能包含了实现以上功能的Java代码,如Mapper类、Reducer类以及...
但是,如果需要在键相同的记录内部按值进行排序(例如,先处理最大或最小的值),则可以自定义GroupingComparator。这样,相同键的数据将首先被分组,然后在每个组内部进行排序。 ### 示例代码 在自定义这些组件时...
### Hadoop 2.7.1 —— NFS 部署详解 #### 一、概述 随着大数据技术的发展,Hadoop作为主流的大数据处理框架之一,其分布式存储系统HDFS得到了广泛的应用。为了提高Hadoop集群的数据访问效率,通常会采用网络文件...
- 描述:提供用于配置 Hadoop 应用程序的方法。 - **构造方法**: - `public Configuration()`: 构造一个空的配置对象。 - `public Configuration(boolean loadDefaults)`: 构造方法,参数为 true 表示先加载...
通过对Mapred-site.xml和core-site.xml中的各项参数进行细致调整,并结合合适的压缩算法和调度策略,可以实现Hadoop集群性能的最大化。这需要根据具体的工作负载和硬件环境进行试验和分析,找到最适合的配置组合。
- **具体实现**:通过统计各个数据块中的元数据,如计数、总和、平方和、最小值、最大值、缺失值数量等,生成统一的ARFF头文件。这些统计信息还作为额外的“元属性”存储在头文件中,有助于后续分析。 - **应用场景*...