第五章 MapReduce离线数据处理.pptxVIP

  • 0
  • 0
  • 约5.28千字
  • 约 17页
  • 2026-01-22 发布于广东
  • 举报

《Hadoop大数据项目实战》

教学目标了解MapReduce的编程模型,熟悉MapReduce数据序列化和分区排序知识知识目标培养学生分析和解决实际问题的能力素养目标掌握利用MapReduce编程模型处理实际应用问题技能目标

任务一酒店数据清洗项目五MapReduce离线数据处理

1.任务要求每一行数据有26个字段,具体字段名参考文件hotel_data.csv第一行。现在任务的需求是对数据文件中存在的不规范的数据进行剔除(比如星级为空的数据),然后再统计不同省份的五星级酒店的个数。

2.设计思路与准备根据MapReduce工作原理可知,MapReduce分为Map和Reduce两个阶段,要剔除不规范的数据,可以在Map阶段对数据进行处理,如果要统计每个省份五星级酒店的个数,可以在Reduce阶段进行汇总,这样可以实现以上需求。然后在IDEA中创建项目并导入项目依赖。

3.Mapper程序编写publicclassHotelMapperextendsMapperLongWritable,Text,Text,IntWritable{@Overrideprotectedvoidmap(LongWritablekey,Textvalue,Contextcontext)throwsIOException,InterruptedException{//首先将map输入的值转换成字符串Strings=value.toString();//判断字符串中是否存在五星级关键字if(s.contains(五星级)){//每行数据存在五星级关键字的情况下,以省份名为输出的key,值则为1//提取省份名String[]arr=s.split(,);Stringprov=arr[3];//对输出内容进行序列化处理Textk=newText(prov);IntWritablev=newIntWritable(1);//利用context对象的write方法进行输出context.write(k,v);}}}

4.Reducer程序编写publicclassHotelReducerextendsReducerText,IntWritable,Text,IntWritable{@Overrideprotectedvoidreduce(Textkey,IterableIntWritablevalues,Contextcontext)throwsIOException,InterruptedException{inttotal=0;//计算每个省份五星级酒店总的个数for(IntWritablei:values){total=total+i.get();}//将每个省份五星级酒店的总个数进行输出IntWritablev=newIntWritable(total);context.write(key,v);}}

5.Driver程序编写publicclassHotelDriver{publicstaticvoidmain(String[]args)throwsIOException,InterruptedException,ClassNotFoundException{Configurationconf=newConfiguration();Jobjob=Job.getInstance();//利用反射机制关联Jar文件job.setJarByClass(HotelDriver.class);job.setMapperClass(HotelMapper.class);job.setReducerClass(HotelReducer.class);//设置map输出的数据类型job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWr

文档评论(0)

1亿VIP精品文档

相关文档