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

相关文章
|
9月前
|
canal 分布式计算 关系型数据库
大数据Spark Streaming实时处理Canal同步binlog数据
大数据Spark Streaming实时处理Canal同步binlog数据
138 0
|
19天前
|
SQL 分布式计算 API
Spark学习------SparkSQL(概述、编程、数据的加载和保存)
Spark学习------SparkSQL(概述、编程、数据的加载和保存)
|
19天前
|
分布式计算 大数据 Apache
【大数据技术】流数据、流计算、Spark Streaming、DStream的讲解(图文解释 超详细)
【大数据技术】流数据、流计算、Spark Streaming、DStream的讲解(图文解释 超详细)
76 0
|
8天前
|
SQL 分布式计算 关系型数据库
使用 Spark 抽取 MySQL 数据到 Hive 时某列字段值出现异常(字段错位)
在 MySQL 的 `order_info` 表中,包含 `order_id` 等5个字段,主要存储订单信息。执行按 `create_time` 降序的查询,显示了部分结果。在 Hive 中复制此表结构时,所有字段除 `order_id` 外设为 `string` 类型,并添加了 `etl_date` 分区字段。然而,由于使用逗号作为字段分隔符,当 `address` 字段含逗号时,数据写入 Hive 出现错位,导致 `create_time` 值变为中文字符串。问题解决方法包括更换字段分隔符或使用 Hive 默认分隔符 `\u0001`。此案例提醒在建表时需谨慎选择字段分隔符。
|
8天前
|
机器学习/深度学习 数据采集 分布式计算
【机器学习】Spark ML 对数据进行规范化预处理 StandardScaler 与向量拆分
标准化Scaler是数据预处理技术,用于将特征值映射到均值0、方差1的标准正态分布,以消除不同尺度特征的影响,提升模型稳定性和精度。Spark ML中的StandardScaler实现此功能,通过`.setInputCol`、`.setOutputCol`等方法配置并应用到DataFrame数据。示例展示了如何在Spark中使用StandardScaler进行数据规范化,包括创建SparkSession,构建DataFrame,使用VectorAssembler和StandardScaler,以及将向量拆分为列。规范化有助于降低特征重要性,提高模型训练速度和计算效率。
|
8天前
|
机器学习/深度学习 分布式计算 算法
【机器学习】Spark ML 对数据特征进行 One-Hot 编码
One-Hot 编码是机器学习中将离散特征转换为数值表示的方法,每个取值映射为一个二进制向量,常用于避免特征间大小关系影响模型。Spark ML 提供 OneHotEncoder 进行编码,输入输出列可通过 `inputCol` 和 `outputCol` 参数设置。在示例中,先用 StringIndexer 对类别特征编码,再用 OneHotEncoder 转换,最后展示编码结果。注意 One-Hot 编码可能导致高维问题,可结合实际情况选择编码方式。
|
19天前
|
分布式计算 Java 关系型数据库
|
19天前
|
SQL 分布式计算 数据可视化
数据分享|Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析
数据分享|Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析
|
19天前
|
新零售 分布式计算 数据可视化
数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析
数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析
|
19天前
|
SQL 分布式计算 Java
Spark学习---SparkSQL(概述、编程、数据的加载和保存、自定义UDFA、项目实战)
Spark学习---SparkSQL(概述、编程、数据的加载和保存、自定义UDFA、项目实战)
154 1