大数据hadoop练习----出租车(未完待续)

网友投稿 263 2022-11-24

大数据hadoop练习----出租车(未完待续)

1.计算出10月1日这天每小时的载客量 JobMain package input.mapreduceT1; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.LongWritable; 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; public class JobMain { //该方法用于指定一个job任务 public static void main(String[] args) throws Exception { Job job = Job.getInstance(new Configuration(), "taxi"); //设置驱动方法 job.setJarByClass(JobMain.class); //设置map,reduce job.setMapperClass(WordCountMapper.class); job.setReducerClass(WordCountReducer.class); //设置map job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(Text.class); //设置reduce job.setOutputKeyClass(Text.class); job.setOutputValueClass(Text.class); //输入输出路径 FileInputFormat.addInputPath(job,new Path("F:\\Personal\\Desktop\\day05\\代码\\day05_mapreduce\\src\\main\\java\\租车\\1.txt")); FileOutputFormat.setOutputPath(job,new Path("F:\\Personal\\Desktop\\day05\\代码\\day05_mapreduce\\src\\main\\java\\output\\Test1.5")); boolean b = job.waitForCompletion(true); System.exit(b?0:1); } } WordCountMapper package input.mapreduceT1; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; import java.io.IOException; /* 四个泛型解释: KEYIN :K1的类型 VALUEIN: V1的类型 KEYOUT: K2的类型 VALUEOUT: V2的类型 */ public class WordCountMapper extends Mapper{ @Override protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { //214704,4,2,20121001081102,116.5546341,39.9706421,0,128,1 //车机标识,触发事件,运营状态,GPS时间,GPS经度,GPS纬度,GPS速度,GPS方向,GPS状态 String[] split = value.toString().split(","); if (split.length >= 4){ //上车 if ("1".equals(split[1])){ //10月1日 String date = split[3].substring(0, 10); //判断GPS是否有效 if (split[8].equals("1")){ if (date.substring(0, 8).endsWith("1001")){ //key是车牌号+每小时 context.write(new Text(date.substring(8,10)),value); } } } } //key GPS时间_车机标识 value 1 } } WordCountReducer package input.mapreduceT1; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Reducer; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; /* 四个泛型解释: KEYIN: K2类型 VALULEIN: V2类型 KEYOUT: K3类型 VALUEOUT:V3类型 */ public class WordCountReducer extends Reducer{ @Override protected void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException { /** * 载客量 */ int CarryingCapacity=0; HashMap> map = new HashMap<>(); ArrayList list = new ArrayList<>(); for (Text value : values) { String[] split = value.toString().split(","); if (split[2].equals("1")){ CarryingCapacity++; } } context.write(key,new Text(CarryingCapacity+"")); //每小时每个车载客量 } }

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:dfrobotProto Shield原型开发板介绍
下一篇:如何为USB Type-C和QC 3.0 选择合适的电源控制器
相关文章

 发表评论

暂时没有评论,来抢沙发吧~