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

简介: 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班的女生有几个

15.2.png

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.求参加考试学生人数

15.1.png

2.小于20岁的人数

15.2.png


3.男生人数

15.3.png


4.13班共有多少学生


15.4.png

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

15.5.png


6.12班的女生的平均成绩是多少

15.6.png


7.13班数学最高成绩是多少

15.7.png


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


15.8.png

相关文章
|
2月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
52 3
|
4月前
|
存储 分布式计算 Java
|
4月前
|
分布式计算 监控 大数据
如何处理 Spark 中的倾斜数据?
【8月更文挑战第13天】
259 4
|
4月前
|
存储 缓存 分布式计算
|
4月前
|
SQL 存储 分布式计算
|
4月前
|
分布式计算 Apache 数据安全/隐私保护
流计算引擎数据问题之在 Spark Structured Streaming 中水印计算和使用如何解决
流计算引擎数据问题之在 Spark Structured Streaming 中水印计算和使用如何解决
56 1
|
5月前
|
分布式计算 数据处理 流计算
实时计算 Flink版产品使用问题之使用Spark ThriftServer查询同步到Hudi的数据时,如何实时查看数据变化
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
弹性计算 分布式计算 DataWorks
DataWorks产品使用合集之spark任务如何跨空间取表数据
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
43 1
|
6月前
|
SQL 分布式计算 HIVE
实时计算 Flink版产品使用问题之同步到Hudi的数据是否可以被Hive或Spark直接读取
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
SQL 分布式计算 NoSQL
使用Spark高效将数据从Hive写入Redis (功能最全)
使用Spark高效将数据从Hive写入Redis (功能最全)
401 1