8. SparkSQL综合作业

发布时间:2022-06-08 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了8. SparkSQL综合作业脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

创建RDD,并转换得到DataFrame。

# 创建RDD
From pyspark.SQL import Row
url = "file:///home/hadoop/sc.txt"
rdd = sc.textFile(url)
.map(lambda x:x.splIT(","))
.map(lambda x:Row(name=x[0],course=x[1],grade=int(x[2])))
# 观察rdd
rdd.take(6)

# 并转换得到DataFrame
DF = spark.createDataFrame(rdd)
# 观察 df
df.show()
df.PRintSchema()
# 注册为临时表
df.createOrReplaceTempview("sc")
# 观察临时表
spark.sql("select * from sc").show()

用DataFrame操作实现

# 总共有多少学生?
df.select(df.name).distinct().count()
# 总共开设了哪些课程?
df.select(df.course).distinct().show()
# 每个学生选修了多少门课?
df.groupBy(df.name).count().show()
# 每门课程有多少个学生选?
df.groupBy(df.course).count().show()
# 有多少个100分?
df.filter(df.grade==100).count()
# Tom选修了几门课?每门课多少分?
df.select(df.course, df.grade).filter(df.name=='Tom').show()
# Tom的成绩按分数大小排序。
df.select(df.course, df.grade).orderBy(df.grade).filter(df.name=='Tom').show()
# Tom的平均分。
df.filter(df.name=='Tom').agg({'grade':'mean'}).show()
# 每个分数+20平时分。
df.select(df.name, df.course, df.grade*0.8+20).show()
# 求每门课的选修人数及平均分
from pyspark.sql.functions import *
df.groupBy(df.course)
.agg({'grade':'mean'})
.select(
  'course',
  bround('avg(grade)',scale=2).alias('平均分'))
.join(
  df.groupBy(df.course)
  .count()
  .select(
    'count'
  )
)
.show()

spark.sql执行SQL语句实现

# 总共有多少学生?
spark.sql("select count(distinct name) from sc").show()
# 总共开设了哪些课程?
spark.sql("select distinct course from sc").show()
# 每个学生选修了多少门课?
spark.sql("select name, count(course) from sc group by name").show()
# 每门课程有多少个学生选?
spark.sql("select course, count(name) from sc group by course").show()
# 有多少个100分?
spark.sql("select count(*) from sc where grade=100").show()
# Tom选修了几门课?每门课多少分?
spark.sql("select course, grade from sc where name='Tom'").show()
# Tom的成绩按分数大小排序。
spark.sql("select course, grade from sc where name='Tom' order by grade asc").show()
# Tom的平均分。
spark.sql("select avg(grade) from sc where name='Tom'").show()
# 每个分数+20平时分。
spark.sql("select name, course, grade*0.8+20 from sc").show()
# 求每门课的选修人数及平均分
spark.sql("select course, count(name), round(avg(grade), 2) from sc group by course").show()

脚本宝典总结

以上是脚本宝典为你收集整理的8. SparkSQL综合作业全部内容,希望文章能够帮你解决8. SparkSQL综合作业所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。