Hadoop Day06~MapReduce计算json文件的电影总分

计算json文件的电影总分

package com.doit.sumrate;

public class UserRateBean {
    private String movie;
    private Integer rate;
    private String timeStamp;
    private String uid;

    public String getMovie() {
        return movie;
    }

    public void setMovie(String movie) {
        this.movie = movie;
    }

    public Integer getRate() {
        return rate;
    }

    public void setRate(Integer rate) {
        this.rate = rate;
    }

    public String getTimeStamp() {
        return timeStamp;
    }

    public void setTimeStamp(String timeStamp) {
        this.timeStamp = timeStamp;
    }

    public String getUid() {
        return uid;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    @Override
    public String toString() {
        return "UserRateBean{" +
                "movie='" + movie + '\'' +
                ", rate=" + rate +
                ", timeStamp='" + timeStamp + '\'' +
                ", uid='" + uid + '\'' +
                '}';

    }
}

package com.doit.sumrate;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
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;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.codehaus.jackson.map.ObjectMapper;
import java.io.IOException;
public class UserRateDriver {
    public static class UserRateMap extends Mapper{
        ObjectMapper objectMapper = new ObjectMapper();
        protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
            String line = value.toString();
            //{"movie":"1193","rate":"5","timeStamp":"978300760","uid":"1"}
            UserRateBean userRateBean = objectMapper.readValue(line, UserRateBean.class);
            String movie = userRateBean.getMovie();
            Integer rate = userRateBean.getRate();
            context.write(new Text(movie),new IntWritable(rate));
        }
    }
    public static class UserRateReducer extends Reducer {
        protected void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException {
            int sum = 0;
            for (IntWritable v : values) {
                sum = sum + v.get();
            }
            context.write(key, new IntWritable(sum));
        }
    }
    public static void main(String[] args) throws InterruptedException, IOException, ClassNotFoundException {

        Configuration conf = new Configuration();
        conf.set("yarn.resorcemanager.hostname", "node01");
        conf.set("fs.deafutFS", "hdfs://node01:9000/");
        Job job = Job.getInstance(conf);

        job.setJarByClass(UserRateDriver.class);

        job.setMapperClass(UserRateMap.class);
        job.setReducerClass(UserRateReducer.class);

        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(IntWritable.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);

        job.setInputFormatClass(TextInputFormat.class);
        job.setOutputFormatClass(TextOutputFormat.class);


        FileInputFormat.setInputPaths(job,new Path(args[0]));
        FileOutputFormat.setOutputPath(job,new Path(args[1]));

        job.submit();
        boolean b = job.waitForCompletion(true);
        System.exit(b?0:1);

    }

}

[root@node01 home]# hadoop fs -mkdir -p /lll/yyy/input/
[root@node01 home]# hadoop fs -put rating.json /lll/yyy/input/
[root@node01 home]# hadoop fs -cat /lll/yyy/input/rating.json
[root@node01 home]# hadoop jar movitrate.jar /lll/yyy/input/rating.json /lll/yyy/output/
[root@node01 home]# hadoop fs -ls /lll/yyy/input/rating.json/
[root@node01 home]# hadoop fs -cat /lll/yyy/output/part-r-00000/
469	204
47	4669
470	66
471	2175
472	119
473	336
474	3718
475	1217
476	94
477	676
478	59
479	372
48	1137
480	10057
481	994
482	621
483	277
484	77
485	1254
486	180
487	162
488	132
489	240
49	101
490	615
491	703
492	1246
493	1075
494	1392
495	142
496	119
497	2668
498	129
499	135
5	890
50	8054
500	2866
501	339
502	300
503	48
504	526
505	172
506	398
507	1085
508	2185
509	2234
510	101
511	472
512	514
513	209
514	1222
515	1763
516	712
517	1213
518	366
519	392
52	1569
520	1096
521	394
522	296
523	428
524	1721
525	67
526	20
527	10392
528	171
529	2864
53	38
530	7
531	1274
532	1186
533	555
534	1097
535	1149
536	174
537	637
538	1204
539	3708
54	105
540	375
541	7692
542	551
543	2308
544	341
545	2
546	656
547	357
548	349
549	600
55	138
550	537
551	3703
552	1714
553	2142
554	68
555	2585
556	558
557	9
558	365
559	15
56	18
560	29
561	47
562	1816
563	55
564	102
565	191
566	38
567	50
568	135
569	293
57	337
570	74
571	122
572	6
573	74
574	603
575	302
576	3
577	163
578	9
579	2
58	2051
580	201
581	571
582	6
583	103
584	4
585	1215
586	2116
587	3930
588	5118
589	10751
59	22
590	5681
591	4
592	5153
593	11219
594	2934
595	4119
596	1868
597	3809
598	34
599	1079
6	3646
60	1147
600	90
601	3
602	169
603	174
605	749
606	207
607	4
608	10692
609	186
61	201
610	2192
611	534
612	190
613	298
614	24
615	271
616	932
617	62
618	19
619	83
62	2000
621	156
623	9
624	4
626	43
627	436
628	1890
63	317
630	20
631	156
632	52
633	72
634	5
635	279
637	356
638	61
639	204
64	179
640	190
641	1
642	2
643	6
644	2
645	72
647	1567
648	5242
649	67
65	295
650	309
651	2
652	26
653	1974
655	1
656	100
657	6
658	3
659	93
66	162
660	3
661	1819
662	382
663	902
664	24
665	128
666	10
667	96
668	207
669	96
67	13
670	247
671	1678
672	4
673	1475
674	1164
678	1299
679	7
68	207
680	215
681	59
682	14
684	1
685	99
687	9
688	485
69	1166
690	4
691	375
692	224
694	373
695	429
696	13
697	217
698	11
7	1562
70	2885
700	482
701	4
702	99
703	16
704	97
705	138
706	5
707	849
708	2332
709	438
71	202
710	119
711	155
712	7
714	595
715	188
716	75
717	4
718	115
719	684
72	338
720	1939
722	103
724	1284
725	254
726	27
728	817
729	11
73	855
730	1
731	134
732	17
733	4989
734	9
735	339
736	3523
737	609
74	357
741	1284
742	440
743	275
744	6
745	2970
746	124
747	110
748	1314
749	11
75	23
750	6083
751	53
753	101
754	38
755	34
756	12
757	15
758	4
759	242
76	508
760	116
761	343
762	651
763	3
764	242
765	450
766	357
767	77
769	39
77	128
771	68
774	4
775	29
776	12
778	2974
779	140
78	163
780	6073
781	348
782	370
783	1257
784	1051
785	2661
786	1437
787	15
788	2840
789	6
79	297
790	3
791	7
792	4
793	26
796	10
798	552
799	1132
8	205
80	199
800	2572
801	375
802	1493
803	210
804	694
805	1235
806	190
807	42
808	146
809	270
81	525
810	176
811	35
813	118
814	3
815	12
818	484
82	345
820	13
821	4
823	13
824	110
826	1
827	6
828	157
829	300
83	122
830	871
831	77
832	1962
833	170
834	8
835	322
836	629
837	758
838	1944
839	299
84	65
840	128
841	85
842	391
843	1
844	25
846	142
847	13
848	536
849	1283
85	660
850	110
851	444
852	1981
853	12
854	29
858	10059
859	2
86	801
860	36
861	959
862	113
863	35
864	43
865	2
866	2187
867	53
868	3
869	130
87	168
870	107
872	3
874	25
875	149
876	60
877	79
878	4
879	670
88	565
880	713
881	202
882	160
884	6
885	111
886	306
887	5
888	106
889	5
89	704
891	432
892	587
893	255
895	2
896	175
897	368
898	2503
899	3217
9	271
90	22
900	1321
901	634
902	2642
903	3867
904	4700
905	1601
906	766
907	412
908	5765
909	1721
910	3578
911	1280
912	7365
913	4585
914	2642
915	1447
916	1792
917	283
918	717
919	7298
92	206
920	4621
921	1176
922	2111
923	4898
924	6982
925	39
926	1715
927	334
928	1623
929	352
93	199
930	1911
931	806
932	747
933	1817
934	1112
935	258
936	538
937	165
938	677
939	35
94	678
940	1502
941	389
942	1227
943	681
944	368
945	1041
946	620
947	772
948	488
949	855
95	1835
950	1238
951	1687
952	969
953	3134
954	1624
955	1722
956	142
957	120
958	44
959	217
96	51
960	69
961	80
962	39
963	193
964	173
965	1031
966	24
967	75
968	2625
969	4494
97	165
970	126
971	1097
972	19
973	321
974	60
975	3
976	200
977	4
978	394
98	12
980	14
981	11
982	298
984	88
985	15
986	836
987	116
988	233
989	5
99	173
990	139
991	599
992	52
993	28
994	1843
996	744
997	94
998	280
999	939
........
........
........

你可能感兴趣的:(Hadoop Day06~MapReduce计算json文件的电影总分)