日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Spark统计一座城市的男女人数,以及男女消费额的最高与最低

發布時間:2024/1/18 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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();

數據已經有了,接下來就可以統計這座城市一共有多少人,消費總額,人均消費了。

代碼如下:
?

SparkConf sparkconf = new SparkConf().setAppName(" ").setMaster("local");JavaSparkContext sc = new JavaSparkContext(sparkconf);JavaRDD<String> lines = sc.textFile("數據路徑");JavaRDD<Integer> rdd1 = lines.map(f->{return (Integer.valueOf(f.split(" ")[2]));}); //只取出消費額這一列,并將其轉化成整數類型long counts = rdd1.count(); //統計城市有多少人long avg = 0;int sum = 0;sum = rdd1.reduce((a, b) -> a + b); //求消費額總額avg = sum/counts; // 人均消費=總消費額/人數//輸出System.out.println("這座城市一共有:" + counts + "人");System.out.println("這座城市的消費總額為:" + sum + "元");System.out.println("這座城市的人均消費額為:" + avg + "元");

結果如下:

?

接下來分別對男性和女性求人數,及最高消費額。我們可以根據性別得到兩個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统计一座城市的男女人数,以及男女消费额的最高与最低的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。