Spark 综合作业

网盘下载sc.txt文件,创建RDD,并转换得到DataFrame。

复制代码
复制代码
>>> lines = spark.sparkContext.textFile('file:///home/hadoop/wc/sc.txt')
>>> parts = lines.map(lambda x:x.split(','))
>>> people = parts.map(lambda p : Row(p[0],p[1],int(p[2].strip()) ))
>>> from pyspark.sql.types import IntegerType,StringType
>>> from pyspark.sql.types import StructField,StructType
>>> from pyspark.sql import Row
>>> fields = [StructField('name',StringType(),True),StructField('course',StringType(),True), StructField('age',IntegerType(),True)]
>>> schema = StructType(fields)
>>> lines = spark.sparkContext.textFile('file:///home/hadoop/wc/sc.txt')
>>> parts = lines.map(lambda x:x.split(','))
>>> people = parts.map(lambda p : Row(p[0],p[1],int(p[2].strip()) ))
>>> schemaPeople = spark.createDataFrame(people,schema)
>>> schemaPeople.printSchema()
>>> schemaPeople.show(10)
复制代码
复制代码

分别用DataFrame操作和spark.sql执行SQL语句实现以下数据分析:

 准备: 创建RDD,并转换为DataFrame;scm持久化;创建spark.sql临时表等预处理:

 

 

 

  1. 总共有多少学生?

    RDD:

    DataFrame:

     spark.sql:      

  2. 总共开设了多少门课程?

    RDD:

    DataFrame:

    spark.sql:

     

  3. 每个学生选修了多少门课?

    RDD:

    DataFrame:

     

    spark.sql:

     

  4. 每门课程有多少个学生选?

    RDD:

    DataFrame:

    spark.sql:

     

  5. 每门课程>95分的学生人数 

    RDD:

    DataFrame:

    spark.sql:

     

     

  6. 课程'Python'有多少个100分?

    RDD:

    DataFrame:

    spark.sql:

     

  7. Tom选修了几门课?每门课多少分?

    RDD:

     

    DataFrame:

    spark.sql:

     

  8. Tom的成绩按分数大小排序。

    RDD:

    DataFrame:

    spark.sql:

     

  9. Tom选修了哪几门课?

    RDD:

    DataFrame:

    spark.sql:

     

  10. Tom的平均分。

    RDD:

    DataFrame:

    spark.sql:(保留了2位小数,round())

     

  11. 'OperatingSystem'不及格人数

    RDD:

    DataFrame:

    spark.sql:

     

  12. 'OperatingSystem'平均分

    RDD:

    DataFrame:

    spark.sql:(保留了2位小数,round())

  13. 'OperatingSystem'90分以上人数

    RDD:

    DataFrame:

    spark.sql:

     

  14. 'OperatingSystem'前3名

    RDD:

    DataFrame:

    spark.sql:

     

     

  15. 每个分数按比例+20平时分。

    RDD:

    DataFrame:

    spark.sql:

  16. 求每门课的平均分

    RDD:

    DataFrame:

    spark.sql:

     

     

  17. 选修了7门课的有多少个学生?

    RDD:

     

    DataFrame:

    spark.sql:

     

     

  18. 每门课大于95分的学生数

    RDD:

     

    DataFrame:

     

    spark.sql:

  19. 每门课的选修人数、平均分、不及格人数、通过率

    RDD:

     

    DataFrame:

     

    spark.sql:

posted @ 2022-05-23 22:53  天井听雨  阅读(91)  评论(0)    收藏  举报