spark 9个题分别用3种方法rdd; df;scs 已建好RDD,DataFrame和临时表,写分析代码: (1)大于95分的得分人次? (2)Tom选修的科目和考分? (3)有哪些选修课? (4)调整20%平时分 (5)每门课的选修人数,按选修人数排序 (6)每门课的平均分,按平均分排序。 (7)每个人的选修课数,平均分,总分 (8)Python考试的前10名 (9)Python课程80分以上的学生人数
时间: 2024-03-11 16:43:37 浏览: 177
spark: RDD与DataFrame之间的相互转换方法
1. RDD方法:
```
# 大于95分的得分人次
rdd.filter(lambda x: x[1] > 95).count()
```
2. DF方法:
```
# 大于95分的得分人次
df.filter(df.score > 95).count()
```
3. Spark SQL方法:
```
# 大于95分的得分人次
spark.sql("SELECT COUNT(*) FROM temp_table WHERE score > 95").show()
```
4. RDD方法:
```
# 调整20%平时分
rdd.map(lambda x: (x[0], x[1]*0.8 + x[2]*0.2, x[3])).collect()
```
5. DF方法:
```
# 每门课的选修人数,按选修人数排序
df.groupBy('subject').count().orderBy('count', ascending=False).show()
```
6. Spark SQL方法:
```
# 每门课的平均分,按平均分排序
spark.sql("SELECT subject, AVG(score) as avg_score FROM temp_table GROUP BY subject ORDER BY avg_score DESC").show()
```
7. DF方法:
```
# 每个人的选修课数,平均分,总分
df.groupBy('name').agg({'subject':'count', 'score':'mean', 'score':'sum'}).show()
```
8. RDD方法:
```
# Python考试的前10名
rdd.filter(lambda x: x[0] == 'Python').sortBy(lambda x: -x[1]).take(10)
```
9. Spark SQL方法:
```
# Python课程80分以上的学生人数
spark.sql("SELECT COUNT(DISTINCT name) FROM temp_table WHERE subject = 'Python' AND score >= 80").show()
```
阅读全文