统计一座城市 (10万或100万人口)中男女人数,以及男性中消费额最高和最低的,女性中消费额最高和最低的

简介: 统计一座城市 (10万或100万人口)中男女人数,以及男性中消费额最高和最低的,女性中消费额最高和最低的

样本数据如下(未截取完整,另一篇有生成数据的代码)

12.1.png

代码如下:


import java.util.Arrays;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import scala.Tuple2;
public class test9 {
  public static void main(String[] args) {
  // TODO Auto-generated method stub
  SparkConf sparkConf = new SparkConf().setAppName("PeopleInfoCalculator").setMaster("local");
    JavaSparkContext sc = new JavaSparkContext(sparkConf);
    JavaRDD<String> filedata=sc.textFile("file:///home/gyq/eclipse-workspace/ALS/leInfo.txt");
    JavaRDD<String> Datardd=filedata.filter(f->{//过滤缺失的数据
    String[] tok=f.split(" ");
  if(tok.length<3)
  return false;
  else
  return true;
  });
    JavaRDD<String> manrdd=Datardd.filter(f->f.contains("M"));//过滤女性
    JavaRDD<String> womanrdd=Datardd.filter(f->f.contains("F"));//过滤男性
    JavaRDD<String> manrdd1=manrdd.flatMap(f->Arrays.asList(f.split(" ")[2]).iterator());//取男性字符
    JavaRDD<String> womanrdd1=womanrdd.flatMap(f->Arrays.asList(f.split(" ")[2]).iterator());//取女性字符
    JavaRDD<Integer> manrdd2 = manrdd1.map(f-> Integer.valueOf(f));//男性数值
    JavaRDD<Integer> womanrdd2 = womanrdd1.map(f->Integer.parseInt(f));  //女性数值
    JavaRDD<Integer> manhigh= manrdd2.sortBy(f->f,false,3);//男性排序高到底
    JavaRDD<Integer> manlow = manrdd2.sortBy(f->f,true,3);//男性排序底到高
    int manhighestconsume=manhigh.first();//男人最高消费
    int manlowestconsume=manlow.first();//男人最低消费
    JavaRDD<Integer> womanhigh = womanrdd2.sortBy(f->f,false,3);//女性排序高到底
    JavaRDD<Integer> womanlow = womanrdd2.sortBy(f->f,true,3);//女性排序底到高
    int womanhighestconsume= womanhigh.first();//女人最高消费
    int womanlowestconsume=womanlow.first();//女人最低消费
    System.out.println("男人最高消费"+manhighestconsume);
    System.out.println("男人最低消费"+manlowestconsume);
    System.out.println("女人最高消费"+womanhighestconsume);
    System.out.println("女人最低消费"+womanlowestconsume);
    sc.close();
  }
}

结果如下:


12.2.png

相关文章
|
数据挖掘 定位技术
男性多项身体维度数据探索
男性多项身体维度数据探索
336 0
|
1月前
|
Kubernetes 架构师 算法
阿里面试:全国14亿人,统计出重名最多的前100个姓名
文章介绍了如何解决“从全国14亿人的数据中统计出重名人数最多的前100位姓名”的面试题,详细分析了多种数据结构的优缺点,最终推荐使用前缀树(Trie)+小顶堆的组合。文章还提供了具体的Java代码实现,并讨论了在内存受限情况下的解决方案,强调了TOP N问题的典型解题思路。最后,鼓励读者通过系统化学习《尼恩Java面试宝典》提升面试技巧。
阿里面试:全国14亿人,统计出重名最多的前100个姓名
|
5月前
1053 住房空置率 (20 分)
1053 住房空置率 (20 分)
|
5月前
|
测试技术
1028 人口普查 (20 分)
1028 人口普查 (20 分)
|
数据库
查询各年龄段人数
查询各年龄段人数
124 0
循环结构-慈善募捐——在全院10000学生中,征集慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目。
循环结构-慈善募捐——在全院10000学生中,征集慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目。
238 0
|
Shell
一维数组实验题:大奖赛现场统分。已知某大奖赛有n个选手参赛,m(m>2)个评委为参赛选手评分(最高10分,最低0分)。统分规则为:在每个选手的m个得分中,去掉一个最高分和一个最低分后,取平均分作为该选
一维数组实验题:大奖赛现场统分。已知某大奖赛有n个选手参赛,m(m>2)个评委为参赛选手评分(最高10分,最低0分)。统分规则为:在每个选手的m个得分中,去掉一个最高分和一个最低分后,取平均分作为该选
511 0
7-56 家庭房产 (25 分)
7-56 家庭房产 (25 分)
115 0
L2-3 互评成绩 (25 分)
学生互评作业的简单规则是这样定的:每个人的作业会被k个同学评审,得到k个成绩。系统需要去掉一个最高分和一个最低分,将剩下的分数取平均,就得到这个学生的最后成绩。本题就要求你编写这个互评系统的算分模块。
281 0