Spark统计一座城市的男女人数,以及男女消费额的最高与最低
生活随笔
收集整理的這篇文章主要介紹了
Spark统计一座城市的男女人数,以及男女消费额的最高与最低
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目中沒有給出數據,我的數據是自己使用隨機數代碼生成的:
?
數據生成代碼如下:
Random r = new Random();FileWriter fw = new FileWriter("生成文件的路徑以及名稱");int x = r.nextInt(1100000)-100000;for(int y = 1;y <= x;y++) {int sex1 = r.nextInt(10);int cost = r.nextInt(10000);String sex;if (sex1%2 == 1) //性別使用隨機生成的數是奇數或是偶數來判斷sex = "M";elsesex = "F";fw.write(y + " " + sex + " " + cost + "\r\n" );fw.flush();}fw.close();數據已經有了,接下來就可以統計這座城市一共有多少人,消費總額,人均消費了。
代碼如下:
?
結果如下:
?
接下來分別對男性和女性求人數,及最高消費額。我們可以根據性別得到兩個RDD,然后可以排序,求首尾的數據即可,也可以直接比大小得到。
我是通過比較大小得出的最高最低消費,沒有使用排序的方式。
代碼如下:
SparkConf sparkconf = new SparkConf().setAppName(" ").setMaster("local");JavaSparkContext sc = new JavaSparkContext(sparkconf);JavaRDD<String> lines = sc.textFile("數據路徑");JavaPairRDD<String, Integer> rdd1 = lines.mapToPair(f->new Tuple2<>(f.split(" ")[1],Integer.valueOf(f.split(" ")[2])));JavaPairRDD<String, Integer>rddM1 = rdd1.filter(f->{return (f._1().contains("M"));}); //只保留含有M的數據JavaPairRDD<String, Integer>rddF1 = rdd1.filter(f->{return (f._1().contains("F"));}); //只保留含有F的數據JavaPairRDD<String, Integer> MAXM = rddM1.reduceByKey((x,y)->MAX(x,y)); //消費額比較大小保留大的,下面同理JavaPairRDD<String, Integer> MAXF = rddF1.reduceByKey((x,y)->MAX(x,y));JavaPairRDD<String, Integer> MINM = rddM1.reduceByKey((x,y)->MIN(x,y));JavaPairRDD<String, Integer> MINF = rddF1.reduceByKey((x,y)->MIN(x,y));MINF.foreach(x -> System.out.println("女性最低消費"+x._2));MINM.foreach(x -> System.out.println("男性最低消費"+x._2));MAXF.foreach(x -> System.out.println("女性最高消費"+x._2));MAXM.foreach(x -> System.out.println("男性最高消費"+x._2));long countsM = rddM1.count(); //統計人數long countsF = rddF1.count();System.out.println("男性人數為:"+countsM + "\n" + "女性人數為:" + countsF);比較大小函數:
public static int MAX(int x,int y) {if (x<y) {return y;}else {return x;}}public static int MIN(int x,int y) {if (x<y) {return x;}else {return y;}}最終結果:
?
?
?
?
不足之處,歡迎指正。hhh
總結
以上是生活随笔為你收集整理的Spark统计一座城市的男女人数,以及男女消费额的最高与最低的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器人仿真开篇
- 下一篇: Xmodem Ymodem Zmodem