《《Spark大数据技术与应用案例教程》教案第10课查询符合条件的商品信息.docx》由会员分享,可在线阅读,更多相关《《Spark大数据技术与应用案例教程》教案第10课查询符合条件的商品信息.docx(6页珍藏版)》请在课桌文档上搜索。
1、课题查询符合条件的商品信息课时2课时(90min)教学目标知识技能目标:(1)了解DataFrame的数据查询方式(2)掌握DalaFrame的数据蛰询操作素质目标:培养举一反三的能力,学会融会贯通教学重难点教学重点:DataFrame的数据查询方式和数据查询操作教学睚点:使用不同的方式查询DataFrame的数据教学方法案例分析法、问答法、讨论法、i井授法教学用具电脑、投影仪、多媒体课件、教材教学过程主要教学内容及步骤课前任务【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过APP或其他学习软件,完成课前任务请大家了解DataFrame的数据查询方法.【学生】完成课前任务考勤【教师
2、】使用APP进行签到【学生】班干部报请假人员及原因问题导入【教师】提出以下问题:应如何插寻DataFrame的数据?【学生】思考、举手回答传授新知【教师】通过学生的回答引入新知,介绍DataFre一、DataFramc的数据查询方式【教师】介绍DataFrame的数据查询方式已知“usrIOCal/SparkZmycodeZDataFrame”目录下伤件,它们的内容分别如图3-20和图3-21所示。打开9)aStudentjson保存=Xname:王二,age:2。,COllege:信息学院(name:张三,age:21,COIIege机械学院name:李四,age:22,COIIege:信息
3、学院name:fi,age:22,-ColIege:人文学院”)图3-20,student.jsonw文件内容分别读取两个文件中的数据并创建DataFrame,用询操作。hadoopbogon|$pysparkdi=spark.read.json(file:/usr/local/spark/myco(df2=spark.read.json(file:/usr/local/sparkmycdf.createOrReplaceTempView(student)StudentDF=spark.sql(select*fromstudentwhereage20H)studentDF.show()Iage
4、collegename+I21机械学院I张三II22信息学院I李四II22人文学院I赵六I图322年龄大于20岁的学生信息(2)使用DataFrame提供的数据查询方法,直接在DataFrame对象上进行直询。DataFrame的数据杳询操作属于懒操作,只有触发执行操作(即数据获取操作)时才会计算并返回结果。二、DagFrame的数据查询操作【教师】利用多媒体展示图表,然后讲解DataFrame的数据查询操作在SParkSQL中,DiUaFrame的数据查询操作包括条件查询、排序查询、分组查询和连接查询等,实现这些直询操作的常用方法如表3-3所示。表3-3DataFrame数据查询操作的常用方
5、法分类方法说明条件查询IUter(Condition)使用给定条件筛选行,where。是仙CH)的别名.参数condition为筛选条件whcrc(condition)排序直询OnkrBy(*cok.ascending)。也rBy)和SOno方法均可用于排序,两者实现的效果相同,均可按照指定列对整强进行排序.参数cols(可选)表示要按其排序的Column对象列表或列名列表;参数ascending(可选)用于指定排序是升序还是降序,默认值为TrUe(升序)sort(*cols,ascending)分组查询grouBy(*cols)使用指定的列对DalaFrame进行分组.参数Cok表示要分组的
6、列连接直询join(oher.on.how)使用给定的连接表达式与另一个DataFramC进行连接.参数OIher表示要连接的DalaFrame;参数on(可选)表示连接列名的字符串、列名列表、连接表达式(Column)或Column对象列表;参数how(可选)表示连接类型,包括inner%oulerleft-oulerlright-ouler.IeRsemi和cross,默认值为inner其他直询SeleCI(*8IS)直询指定字段的数据信息.参数8k表示指定字段se!ectExpr(*expr)SeleCl()的一z?变体,接受SQL表达式,参数“cxpr是一个可变参数,表示要处理的表达式
7、,该表达式可以是字符串形式的SQL表达式,也可以是Column对象列表limit(num)直询前num行数据【教师】通过例子,帮助学生掌握DataFrame的数据查询操作【例3-8使用filter。方法查询并显示年龄大于20岁的学生信息,如图3-23所示。df.filter=df.filter(age20)df,filter.show()IagecollegenameI211机械学院I张三II22|信息学院I李四II22|人文学院I赵六I图3-23年龄大于20岁的学生信息例3-9使用OrderByo方法分别按照age字段升序和降序排列学生信息,如图3-24所示.|dforderbyasc=df
8、.orderBy(age)df.orderby.asc.show()Iage Collegelnamel升序I 20|信息学院I王二II 21|机械学院I张三II 22|信息学院I李四II 22|人文学院I赵六I降序 df. Orderby desc=df.orderBy(aqe,ascendinq=False) df_orderby_desc. show()Iage collegenameI 22|信息学院I学四I I 22|人文学院I赵六I I 21|机械学院I张三I I 20|信息学院I王二I图3-24按age字段排序的学生信息【例3-10使用即。UPByo方法根据c。IIegC字段对数
9、据进行分组操作,然后按学院统计学生信息, 输出结果如图3-25所示。 df_c rouppy=df . groupBy df_ roubb. covlt(): ShI college)countIAegF,)f6w()- I和川g;IIPByc方法IK4 college字段进行分组I 使用CoUnt()方法按照学院统计学生人数院院院 学学学 械文总 机人信djqrupbymevn(age)ShOW(片I college)avg(age)I使川mean。方法按照学院统计学生的平均年龄I机械学院I21.0I人文学院I22.0I信息学院I21.0使用agg()方法按照学院统计学生的+最小年龄、最大年
10、龄和平均年龄fromDVSDark.salimoortfunctions己SFdf_*oupby.agg(F.min(age).F.max(age).F.avg(age).sho()IColIegelmin(age)ma(age)avg(age)|I机械学院I212121.01I人文学院I222222.0I信息学院I20|22121.0图3-25按学院统计学生信息【高手点拨】groupBy()方法常与agg()、COUnt()、mean。、max()xmin()和SUmO等方法合用,agg()方法用于计算每个分组的聚合结果;COUnt()方法用于计算分组的元素数;mean。、max。、min(
11、)与sum()方法分别用于计算分组中某字段的平均值、最大值、最小值与和。【例3-11使用join。方法根据name字段连接df和df2两个DataFramc,连接直询结果如图3-26所示。df.join=df.join(df2,name).show()InameIageIcollege)phoneI王二I20信息学院15136665211I张三I21|机械学院15136665212I李四I22|信息学院15136665213j赵六I22|人文学院15136665214图3-26辘查询结果【例3-12使用SCIeCto方法查询college和name字段的数据,如图3-27所示。使用IimitO
12、方法查询前两行数据,如图3-28所示。使用SeleCtEXPrO方法将字段名college修改为school,如图3-29所示。df.select=df.select(college,name)deselect,show()df_Ximit=df.limit(2)+-+df_limit.show()I age collegename|Icollegename+-+-+I 20|信息学院I王二II 21|机械学院I张三II信息学院I王二II机械学院I张三II信息学院I李四II人文学院I赵六I+-+图3-27杳询ColIege和name字段的数据图3-28杳询前两行数据df.selectExpr=
13、df.selectExpr(name,age,collegeasschool)df_selectExpr.show()InameIageIschoolI王二I20信息学院II张三I21机械学院II李四I22信息学院II赵六I22人文学院I图3-29修改字段名【学生】聆听、思考、理解、记录1.查询并统计价格超过500元的各类商品信息和数量【教师】介绍“查询并统计价格超过500元的各类商品信息和数量”的大概流程,安排学生扫描微课二维码观看视频“直询并统计价格超过500元的各类商品信息和数量”(详见教材),并要求学生进行相应操作打开PyCharm,在FaiaFrame”目录下新建,select_pr
14、ice.pyH文件,然后在该文件中编写应用程序,查询商品价格超过500元的商品数量。实现步骤如下。课堂实践步骤I创建SparkSession对象。步骤2A使用read.csv()方法读取product.csv文件中的数据创建DataFrame(即df)。其中,header=True表示第一行是列名,inferSchema=True表示自动推断列的类型。步骤3A使用f11ter()方法过滤出df中价格超过500元的商品.(详见教材)【学生】自行扫码观看配套微课,按照要求进行操作,如遇问题可询问老师【教师】巡堂辅导,及时解决学生遇到的问题2.为库存小于50件的商品设置库存预警【教师】介绍“为库存小
15、于50件的商品设置库存预警”的大概流程,安排学生扫描微课二维码观看视频”为库存小于50件的商品设置库存预警和数量”(详见教材),并要求学生进行相应操作打开PyCharm,在daiaFrame目录下新建wselect_stock.pyH文件,在该文件中编写应用程序,查询库存小于50件的商品,并提醒超市管理人员需要补货。实现步骤如下.步骤IA创建SparkSession对象。步骤2使用read.csv()方法读取product.csv文件中的数据创建DataFrame(即sdf).步骤3A使用dr。PDUPIiCaIeSo方法去除self中重复的数据行,然后使用fillna()方法将sdf中缺失的
16、数值填充为0。(详见教材)【高手点拨】dropDuplicates()是一种数据处理方法,用于去除DataFrame中的重复行。fillna(value,SUbSet)方法用于将DataFrame中的空缺值(null或NaN)替换为指定的值,参数ValUe用于替换空缺值;参数subset(可选)用于指定列名列表,只有在subset中指定的列才会进行填充操作,其他列不受影响,如果没有指定SUbSet,则所有列都会进行填充操作。【学生】自行扫码观看配套微课,按照要求迸行操作,如遇问题可询问老师【教师】巡堂辅导,及时解决学生遇到的问题课堂小结【教师】简要总结本节课的要点DataFrame的数据直询方式DataFrame的数据查询操作【学生】总结回顾知识点作业布置【教师】布置课后作业(1)完成项目三项目实训中与本科相关的习题;(2)根据课堂知识,课后自己尝试DataFrame的数据直询操作,直询符合条件的数据信息。【学生】完成课后任务教学反思