spark9个题3种方法随机抽一个题一个方法 已建好RDD,DataFrame和临时表,直接写抽到题的分析代码: (1)大于95分的得分人次? (2)Tom选修的科目和考分? (3)有哪些选修课? (4)调整20%平时分 (5)每门课的选修人数,按选修人数排序 (6)每门课的平均分,按平均分排序。 (7)每个人的选修课数,平均分,总分 (8)Python考试的前10名 (9)Python课程80分以上的学生人数
时间: 2024-03-11 18:48:21 浏览: 55
以下是随机抽取一个题目和一个方法后的代码实现:
1. 大于95分的得分人次
使用DataFrame实现:
```python
df.filter(df['score'] > 95).agg({'count': 'sum'}).show()
```
2. Tom选修的科目和考分
使用临时表实现:
```python
spark.sql("SELECT subject, score FROM temp_table WHERE name = 'Tom'").show()
```
3. 有哪些选修课?
使用RDD实现:
```python
rdd.map(lambda x: x[2]).distinct().collect()
```
4. 调整20%平时分
使用DataFrame实现:
```python
from pyspark.sql.functions import col
df.withColumn('final_score', col('score') * 0.8).show()
```
5. 每门课的选修人数,按选修人数排序
使用DataFrame实现:
```python
df.groupBy('subject').agg({'name': 'count'}).orderBy('count(name)').show()
```
6. 每门课的平均分,按平均分排序
使用临时表实现:
```python
spark.sql("SELECT subject, AVG(score) as avg_score FROM temp_table GROUP BY subject ORDER BY avg_score").show()
```
7. 每个人的选修课数,平均分,总分
使用DataFrame实现:
```python
from pyspark.sql.functions import count, avg, sum
df.groupBy('name').agg(count('subject'), avg('score'), sum('score')).show()
```
8. Python考试的前10名
使用DataFrame实现:
```python
from pyspark.sql.functions import desc
df.filter(df['subject'] == 'Python').orderBy(desc('score')).limit(10).show()
```
9. Python课程80分以上的学生人数
使用RDD实现:
```python
rdd.filter(lambda x: x[1] == 'Python' and x[3] > 80).count()
```
阅读全文