spark数据如下:答案仅供参考

spark数据如下:

班级ID 姓名 年龄 性别 科目 成绩

12 张三 25 男 chinese 50

12 张三 25 男 math 60

12 张三 25 男 english 70

12 李四 20 男 chinese 50

12 李四 20 男 math 50

12 李四 20 男 english 50

12 王芳 19 女 chinese 70

12 王芳 19 女 math 70

12 王芳 19 女 english 70

13 张大三 25 男 chinese 60

13 张大三 25 男 math 60

13 张大三 25 男 english 70

13 李大四 20 男 chinese 50

13 李大四 20 男 math 60

13 李大四 20 男 english 50

13 王小芳 19 女 chinese 70

13 王小芳 19 女 math 80

13 王小芳 19 女 english 70

(1)求参加考试学生人数。

(2)小于20岁的人数。

(3)男生人数。

(4)13班共有多少学生

(5)语文的平均成绩是多少

(6)12班的女生的平均成绩是多少

(7)13班数学最高成绩是多少

(8)总成绩大于150分的12班的女生有几个

package homeworkRDD;


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 countstudent {

	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> dataFile = sc.textFile
    		("file:///home/gyq/下载/spark-2.3.2-bin-hadoop2.7/data/countdata.txt");
    JavaRDD<String> data=dataFile.filter(f->!f.contains("成绩"));
    JavaRDD<String> jj=data.map(f->f.split(" ")[1]).distinct();

   long a=jj.count();//1
   System.out.println("参加考试的人数有: "+a);
   
   JavaRDD<String> rdd1=data.map(f->f.split(" ")[1]+" "+f.split(" ")[2]);
   JavaRDD<String> rdd2=rdd1.filter(f->Integer.valueOf(f.split(" ")[1])<20);
   long b=rdd2.distinct().count();//2
   System.out.println("小于20岁的人数有: "+b);
   JavaRDD<String> jj1=data.map(f->f.split(" ")[1]+" "+f.split(" ")[3]);
   
   JavaRDD<String> rdd3=jj1.filter(f->f.contains("男")).distinct();
   long c=rdd3.count();//3
   System.out.println("男生的人数有: "+c);
   JavaRDD<String> jj2=data.map(f->f.split(" ")[0]+" "+f.split(" ")[1]);
   JavaRDD<String> rdd4=jj2.filter(f->f.contains("13"));
   long d=rdd4.distinct().count();//4
   System.out.println("13班的人数有: "+d);
   JavaRDD<String> rdd5=data.filter(f->f.contains("chinese"));
   JavaRDD<Integer> rdd6=rdd5.map(f->Integer.valueOf(f.split(" ")[5]));
  long ff=rdd6.count();
   double g=rdd6.reduce((x,y)->x+y);
   double scorechinese=g/ff;
  System.out.println("语文平均成绩是:"+scorechinese);//5
   JavaRDD<String> rdd7=data.filter(f->f.contains("12")&&f.contains("女"));
   JavaRDD<Integer> rdd8=rdd7.map(f->Integer.valueOf(f.split(" ")[5]));
   long ff1=rdd8.count();//
   double g1=rdd8.reduce((x,y)->x+y);
   double score12women=g1/ff1;

 System.out.println("12班女生平均成绩"+score12women);//6
 JavaRDD<String> rdd9=data.filter(f->f.contains("13")&&f.contains("math"));
 
 JavaRDD<Integer> rdd10=rdd9.map(f->Integer.valueOf(f.split(" ")[5]));
 JavaRDD<Integer> rdd11=rdd10.sortBy(f->{return f;},false,1);
 double gg=rdd11.first();
System.out.println("13班数学成绩最高是"+gg);//7
 JavaRDD<String> rdd12=data.filter(f->f.contains("12")&&f.contains("女"));
 JavaRDD<Integer> rdd13=rdd12.map(f->Integer.valueOf(f.split(" ")[5]));
 
 JavaPairRDD<String,Integer> rdd14=rdd12.mapToPair(f->{
	 return new Tuple2<String,Integer>
	 (f.split(" ")[1],Integer.valueOf(f.split(" ")[5]));
 });
 
 JavaPairRDD<String,Integer> rdd15=rdd14.reduceByKey((x,y)->x+y);
 JavaPairRDD<String,Integer> rdd16=rdd15.filter(f->f._2>150);
 long count=rdd16.count();
 System.out.println("总成绩>150有"+count+"人");//8

	sc.stop();
}
}

结果如下:

  1. 运行结果展示:
  1. 求参加考试学生人数

  1. 小于20岁的人数

  1. 男生人数

  1. 13班共有多少学生

  1. 语文的平均成绩是多少

  1. 12班的女生的平均成绩是多少

  1. 13班数学最高成绩是多少

  1. 总成绩大于150分的12班的女生有几个

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西柚与蓝莓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值