当前位置: 首页 > news >正文

镇江建设网站的公司wordpress源码商城模板

镇江建设网站的公司,wordpress源码商城模板,阿里云域名注册好后怎么建设网站,建设网站的网站安全使用Hadoop MapReduce实现各省学生总分降序排序,根据省份分出输出到不同文件 本文将展示如何使用Hadoop MapReduce对一组学生成绩数据进行处理,将各省的学生成绩按总分降序排序并按照省份进行分区将结果分别输出到不同的文件中。 数据样例 我们将使用…

使用Hadoop MapReduce实现各省学生总分降序排序,根据省份分出输出到不同文件

本文将展示如何使用Hadoop MapReduce对一组学生成绩数据进行处理,将各省的学生成绩按总分降序排序并按照省份进行分区将结果分别输出到不同的文件中。

数据样例

我们将使用以下格式的数据:
在这里插入图片描述

实现步骤

我们将通过以下步骤来实现这一目标:

**1、Mapper类:**解析每一行数据,提取省份和总分,并输出为键值对。
**2、Reducer类:**对每个省份的数据按总分降序排序后输出到相应的文件中。
**3、Partitioner类:**确保同一省份的数据被发送到同一个Reducer。
**4、Driver类:**配置并运行MapReduce作业。

代码实现

Mapper类
Mapper类将每一行数据解析为省份和总分,并输出为键值对,键是省份,值是总分和学生信息的组合。

package org.example.mapReduce;import java.io.IOException;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;public class ProvinceScoreMapper extends Mapper<Object, Text, Text, Text> {@Overrideprotected void map(Object key, Text value, Context context) throws IOException, InterruptedException {String line = value.toString();// Skip the header lineif (line.startsWith("考号")) {return;}String[] fields = line.split(" ");String province = fields[11];String totalScore = fields[10];context.write(new Text(province), new Text(totalScore + "," + line));}
}

Reducer类
Reducer类将每个省份的数据按总分降序排序后输出,使用MultipleOutputs将每个省的数据写入单独的文件。

package org.example.mapReduce;import java.io.IOException;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.output.MultipleOutputs;public class ProvinceScoreReducer extends Reducer<Text, Text, Text, Text> {private MultipleOutputs<Text, Text> multipleOutputs;@Overrideprotected void setup(Context context) throws IOException, InterruptedException {multipleOutputs = new MultipleOutputs<>(context);}@Overrideprotected void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException {List<String> students = new LinkedList<>();for (Text val : values) {students.add(val.toString());}// Sort students by total score in descending orderCollections.sort(students, (a, b) -> {int scoreA = Integer.parseInt(a.split(",")[0]);int scoreB = Integer.parseInt(b.split(",")[0]);return Integer.compare(scoreB, scoreA);});for (String student : students) {String[] parts = student.split(",", 2);multipleOutputs.write(new Text(parts[1]), null, key.toString() + "/part");}}@Overrideprotected void cleanup(Context context) throws IOException, InterruptedException {multipleOutputs.close();}
}

Partitioner类
Partitioner类确保同一省份的数据被发送到同一个Reducer。

package org.example.mapReduce;import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Partitioner;public class ProvincePartitioner extends Partitioner<Text, Text> {@Overridepublic int getPartition(Text key, Text value, int numPartitions) {String province = key.toString();return (province.hashCode() & Integer.MAX_VALUE) % numPartitions;}
}

Driver类
Driver类配置并运行MapReduce作业。

package org.example.mapReduce;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.MultipleOutputs;public class ProvinceScoreSorter {public static void main(String[] args) throws Exception {if (args.length != 2) {System.err.println("Usage: ProvinceScoreSorter <input path> <output path>");System.exit(-1);}Configuration conf = new Configuration();Job job = Job.getInstance(conf, "Province Score Sorter");job.setJarByClass(ProvinceScoreSorter.class);job.setMapperClass(ProvinceScoreMapper.class);job.setPartitionerClass(ProvincePartitioner.class);job.setReducerClass(ProvinceScoreReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(Text.class);FileInputFormat.addInputPath(job, new Path(args[0]));FileOutputFormat.setOutputPath(job, new Path(args[1]));MultipleOutputs.addNamedOutput(job, "province", FileOutputFormat.class, Text.class, Text.class);System.exit(job.waitForCompletion(true) ? 0 : 1);}
}

运行MapReduce作业

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

通过以上步骤,我们实现了一个Hadoop MapReduce作业来对各省的学生总分进行降序排序,并将结果写入不同的文件中。

如有遇到问题可以找小编沟通交流哦。另外小编帮忙辅导大课作业,学生毕设等。不限于MapReduce, MySQL, python,java,大数据,模型训练等。 hadoop hdfs yarn spark Django flask flink kafka flume datax sqoop seatunnel echart可视化 机器学习等
在这里插入图片描述

http://www.yayakq.cn/news/993942/

相关文章:

  • 宁波网站建设服务报价如何自己做推广
  • 0791网站建设网站广告弹窗代码
  • 顺的网站建设教程模板页
  • 特色个人网站焦作网站建设公司
  • 北京高端网站建设入门情留 蚊子 pj wordpress
  • 律师所网站建设推广任务怎么做
  • 国外设计搜索网站软件外包公司是干什么的
  • 新吴区网站建设万网站
  • 焦作建网站做同款的网站
  • 帝国cms网站地图xml网站建设的心得
  • 自适应网站开发语言wordpress 响应式 企业
  • 网站水军怎么做线上销售渠道有哪些
  • 做网站用备案吗建手机网站的必要性
  • 网站的后续优化方案asp网站开发需要的基本条件
  • 房地产集团网站建设微信小程序页面模板
  • 注册个网站多少钱中国营销在线
  • 建设外贸国外站点网站苏州建网站的公
  • 域名查询权威网站虞城网站建设
  • 潍坊网站制作人才招聘wordpress 页面内菜单
  • asp音乐网站开发教程wordpress 域名绑定
  • 什么样的网站适合优化电商wordpress
  • 网站开发 注意事项wordpress侧边栏添加分类
  • 网站开发职位网站制作网站建站
  • 网站导航设计应注意哪些问题盟族网站建设
  • 企业h5网站建设重庆工程公司有哪些
  • 整站seo免费咨询学院校园网网站建设情况
  • 搜集10个优秀网站网页版梦幻西游金卡竞猜
  • 网站数据分离 怎么做所有做网站公司
  • 网站开发工作怎么样郴州网站设计公司
  • 成都网站建设企业新城区网站建设