版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目四SparkSQL处理结构化学生数据SparkSQL
分析学生信息(2)任务5orderBy排序、groupBy分组、distinct去重、join连接操作等进一步分析学生数据。limit获取DataFrame的前N行;与take方法不同,limit方法返回值为类型为Dataset。5.1limit获取前N行orderBy、sort均可用于排序,二者等效、用法基本一致;下面以orderBy为例讲解,orderBy方法有多重用法:(1)orderBy("age"),参数为String,按照age升序排列5.2orderBy、sort排序
(2)参数为Column,结合asc、desc进行升序或降序排列。5.2orderBy、sort排序
若是要求降序排序,可以使用desc(“字段名称”)或者$”字段名”.desc或者在指定字段前面加“-”来表示降序排序(3)orderBy中可以设置多个参数,进行多字段组合排序。5.2orderBy、sort排序
groupBy为分组操作,其返回值类型为RelationalGroupedDataset,后续经常与count、mean、max、min、sum等操作合用。如下所示,df按照“institute”分组,得到一个RelationalGroupedDataset实例。5.3
groupBy分组操作(1)使用count,按学院统计学生人数,如下所示。方法描述max(colNames:String)获取分组中指定字段或者所有的数值类型字段的最大值min(colNames:String)获取分组中指定字段或者所有的数字类型字段的最小值mean(colNames:String)获取分组中指定字段或者所有的数字类型字段的平均值sum(colNames:String)获取分组中指定字段或者所有的数字类型字段和值count()获取分组中的元素个数5.3
groupBy分组操作(2)使用mean,按学院统计平均年龄,如下所示。(3)按学院、性别统计平均年龄,如下所示。(4)按学院、性别统计学生年龄最大值,如下所示。5.3
groupBy分组操作(1)distinct方法用于删除DataFrame中的重复行。下图中,创建含有重复元素的df2(createDataFrame方法将在后续任务中讲解);然后,使用distinct方法去重,如下所示。5.4distinct去重操作(2)dropDuplicates可以根据指定的字段进行去重。例如根据institute、sex两列进行去重,最终每个学院、男女生各保留一名学生。5.4distinct去重操作agg聚合操作常用于部分数据列的统计,也可以与groupBy组合使用,从而实现分组统计的功能;下面通过几个例子演示agg的使用方法。(1)统计所有学生年龄的最大、最小、平均值。(2)统计所有学生年龄的最大、最小、平均值(第二种写法)5.5agg聚合操作(3)统计所有学生年龄的加和、手机号码最大值(4)与groupBy组合使用,分学院统计年龄最大值、最小值5.5agg聚合操作join操作用于连接两个DataFrame组成一个新的DataFrame;下面创建两个DataFrame:df1、df2,演示内连接join操作的效果。join操作也可以写成如下形式,达到的效果基本一致,但join后产生的DataFrame的列数量不同、显示效果有所差别(df3有3列,而df4有4列)。5.6join连接操作SparkSQL
分析学生信息(3)任务6stat用于制定字段统计、intersection获取两个DataFrame的共有记录、na处置DataFrame中的空值等。进一步分析学生信息。直接执行SQL语句的方法。
stat方法可以用于计算指定字段或字段间的统计,stat方法返回DataFrameStatFunctions类型对象;DataFrameStatFunctions又可以调用接口freqItems(找出频繁出现的元素)、corr(两列的相关性)、cov(两列的协方差)等。(1)freqItems找出“age”、“institute”列中频繁出现的元素。(2)corr求“age”、“phone”两列的相关性。6.1stat方法获取指定字段统计信息(3)cov求两列的协方差6.1stat方法获取指定字段统计信息intersect方法用于获取两个DataFrame的共有记录(交集);用createDataFrame方法创建两个DataFramedf1、df2,而后使用intersect方法获取df1、df2的的共有记录。6.2intersect方法获取两个DataFrame共有记录(1)withColumnRenamed重命名指定的列字段名称;下图中,使用withColumnRenamed方法将列名改为“school”。6.3操作字段名(2)withColumn方法可在当前DataFrame中增加一列(该列可来源于自身,但不能为其他DataFrame)下图中,df使用withColumn方法增加一列,它是在原先age列df(“age”)基础上,+1得来。6.3操作字段名SparkSQL中,经常用na方法处置空值,其返回值类型为DataFrameNaFunctions;而DataFrameNaFunctions有drop、fill等方法具体处理空值。为演示na方法处理空值,由JSON文件people_null_values.json创建DataFrame;注意第二行sex、第三行数据institute数据缺失。6.4处置空值(1)drop方法用于删除含有空值的行,只要行数据中含有空值(Null),就删除该行。下图中,首先由people_null_values.json生成DataFrame(df2),而后使用na、drop方法删除含有空值的行。6.4处置空值(2)对于给定的列,如果有数值为空,删除
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养老护理需求现状
- 弘扬抗疫精神歌颂抗疫英雄
- 病理科白血病诊断流程
- 2026湖南长沙市芙蓉区招聘中小学教师41人备考题库附答案详解(培优a卷)
- 2026山东农业大学养分资源高效利用理论与技术创新团队博士后招聘备考题库附参考答案详解(培优a卷)
- 小学生中华文化科普
- 2026江西工业职业技术学院图书管理员岗位招聘1人备考题库及参考答案详解【新】
- 2026上海复旦大学化学系舒校坤课题组招聘全职博士后备考题库(真题汇编)附答案详解
- 2026北京大学前沿交叉学科研究院招聘1名劳动合同制工作人员备考题库附参考答案详解【轻巧夺冠】
- 2026内蒙古包头外国语实验学校教师招聘备考题库含答案详解(黄金题型)
- 想象与联想课件
- 检验科试剂成本管控与质量监控体系
- 分级诊疗下的医疗成本效益分析路径
- 2025年10月自考15041毛中特试题及答案
- 临床护理带教风险防范
- 静脉输液治疗规范与并发症预防
- 皖北卫生职业学院单招职业适应性测试题库及答案解析
- 2025年智能穿戴设备数据采集合同
- 2025至2030中国牛肉行业运营态势与投资前景调查研究报告
- 2026年合肥信息技术职业学院单招职业技能测试题库及答案1套
- 项目部全员安全生产责任制
评论
0/150
提交评论