《《Spark大数据技术与应用案例教程》教案第7课存储归纳后的学生成绩数据.docx》由会员分享,可在线阅读,更多相关《《Spark大数据技术与应用案例教程》教案第7课存储归纳后的学生成绩数据.docx(4页珍藏版)》请在优知文库上搜索。
1、课题存储归纳后的学生成绩数据课时2课时(90min)教学目标知识技能目标:(1)熟悉Spark中常见的文件格式(2)掌握将RDD存储为不同类型文件的方法素质目标:能够意识到SparkRDD应用的价值,培养学生使用RDD存储为不同类型文件的能力,使其能够跟上时代发展的步伐教学重难点教学重点:SPark中常见的文件格式教学难点:将RDD保存为特定文件教学方法案例分析法、问答法、讨论法、讲授法教学用具电脑、投影仪、多媒体课件、教材教学过程主要教学内容及步骤课前任务【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过APP或其他学习软件,完成课前任务请大家了解Spark中常见的文件格式。【学生
2、】完成课前任务考勤【教师】使用APP迸行签到【学生】班干部报请假人员及原因问题导入【教师】提出以下问题:你知道Spark中常见的文件格式有哪些吗?【学生】举手回答传授新知【教师】通过学生的回答引入新知,介绍Spark中常见的文件格式,以及将RDD保存为特定文件的方法等内容一、SPark中常见的文件格式【教师】介绍SPark中常见的文件格式SPark中常见的文件格式有普通的文本文件、JSON文件、CSV文件等。文本文件是指以txt为扩展名的文件,比较常见,此处不再螯述。1.JSON文件JSON(javascriptobjectnotation)是一种轻量级、文本格式的数据交换标准,它是基于Jav
3、aScript的一个子集,适用于多种不同语言。JSON文件采用键值对的方式描述数据,其中key为字符串类型,value可以是数字、字符串、布尔值、数组、对象等类型.JSON文件数据的书写格式如下,示例如图2-35所示。11ae,:John,age:30,city:MewYork,interests:reading,nusic,traveling,education:degree:Masters,major:CoeputerScience图2-35JSON文件数据示例JSoN文件以“形式开始和结束,表示一个对象。在对象内部,每个键值对内部使用:分隔。键必须是字符串,值可以是任何有效的JSON类型
4、。键值对之间使用分隔。数组用表示,并且数组元素之间使用,分隔。文本字符串必须使用双引号包围,不支持单引号。2.CSV文件CSV是一种常用的电子表格文件格式。CSV文件以为分隔符9微据值组织成行和列的形式,其中每行表示一条记录,如图2-36所示。打开(O)aid.card.csvZsrocalsparicmycode保存(三)三姓名,身份证号码,出生日期,性别,地址张三,11010119900101XXXX,199e-。1-。1,另,北京市朝阳区赵六,41010119901201XXXX,199012。1,女,河南省郑州市中原区钱七,3201011980U02XXXX,1980-11-。2,男,
5、江苏省南京市鼓楼区图2-36,id-card.csv,f文件内容二、将RDD保存为特定文件使用Spark提供的方法可以读取多种文件中的数据,以便进行必要的数据处理和分析。在完成数据分析后,可以将分析结果存储至特定文件中,以便后续对现有分析结果进行进一步的处理与分析。在SPark中,使用IeXIFileO方法可以读取多种文件创建RDD该方法前面已经介绍过,此处不再赘述。使用SaVeASTeXtFiIeO方法可以将RDD保存为特定文件,即将RDD中的数据存储至特定文件中。该方法的基本格式如下。SaveAsTextFileCpath,compressionCodecClass)其中,参数的含义如下。
6、(1)path:文件保存的目录地址。要求该目录地址事先不存在;如果存在,运行代码时Spark就会报错。(2)compressionCodecClass(可选):压缩编解码器类的完全限定类名(如press.GzipCodec)【教师】通过例子,帮助学生掌握将RDD保存为特定文件的方法【例2-19文本文件的读取与存储。现有“usrIoCaIsaprkmycodehe11o.SPark.txt”文件,内容如图2-37所示。F打开(0)国HelloSparkIloveSpark图2-37hello_SPark.txt”文件内容使用IeXIFile()方法读取hello_spark.txi文件创建RDD
7、,执行foreach。操作输出RDD的元素,如图2-38所示。然后,使用repartition。方法将分区设置为I0使用SaVeASTeXtFiIeo方法将RDD保存为文本文件,生成一个output=目录(见图2-39),目录中包含pan-00000和SUCCESS文件,其中part-00000”文件用于存储RDD的元素。hadoopbogon$pyspark粒卖取本地文件hello_spark.txt创建名为words的RDDwords=sc.textFile(file:/usr/local/spark/mycode/hello_spark.txt)#输出RDD的元素words.fbreac
8、h(print)盼区设置为I,使用SaVeASTeXtFile()方法将RDD保存为文本文件words.repartition(1).saveAsTextFile(filerusrlocalsparkmycodeoutput.txt)SParkmycodeoutput.txtwords,foreach(print)HelloSparkIloveSparkpart-00000-SUCCESS图2-38输出RDD(words)的元素图2-39ouipui.ixt目录【高手点拨】在PySpark交互式执行环境中使用换行时,会出现”符号,表示语句尚未完成。输入代码时,不需要输入符号,因此本书代码示例中
9、不显示符号。【例2-20JSON文件的读取与存储。在“usrlocalsparkmycode”目录下,创建一个“example.json”文件,生成的文件内容如图2-40所示。(hadoop(3)bogon$echo(name:Alice,age:25,name:Bob,age:30name:Charlie,age:35,usrlocalsparkmycodeexample.json!name:Alice,age:25name:Bob,age:30)id_card=file:/usr/local/spark/mycode/id_card.csv僦取文件创建RDD并分割RDD元素id_card_
10、rdd=sc.textFile(id_card).map(Iambdaline:line.split(,)id_card_rdd.foreach(print)#将RDD元素转换为CSV格式的字符串csv-rdd=id_card_rdd.map(lambdax:.join(x)#将RDD保存为CSV文件csv-rdd.repartition(1).saveAsTextFile(fileusrlocalsparkmycodeoutput.csv)id_card_rdd.foreach(print)姓名身份证号码,出生日期性别地址张三11010119900101XXXX,-1990-01-0,男,北
11、京市朝阳区赵六,41010119901201XXXX,T990T2-01,女,河南省郑州市中原区钱七32010119801102XXXX,1980-11-02.男江苏省南京市鼓楼区1图2-42输出RDD(id_card_rdd)的元素【高手点拨】将RDD保存为特定文件时,若RDD的分区数为多个,则生成的目录中用于存储RDD元素的文件也有多个。例如,在例2-21中,若使用repartition。方法将分区设置为2,则生成的output.csv目录中包含part-00000part-OOOOI”和SUCCESS”文件,其中part-000(X)和part-O(X)OI”文件都用于存储RDD的元素。
12、【学生】聆听、思考、理解、记录课堂实践【教师】介绍“存储归纳后的学生成绩数据”制作的大概流程,安排学生扫描微课二维码观看视频“存储归纳后的学生成绩数据“(详见教材),并要求学生进行相应操作打开PyCharm,在“rdd目录下新建oulpuLreSUlt.py”文件,然后在该文件中编写应用程序,将归纳后的学生成绩数据保存为CSV文件。实现步骤如下。步骤IA导入任务三任务实施中的average,py文件,以便后续调用文件中的对象或RDD等。步骤2k配置Spark应用程序。使用average.sc获取已经存在的SparkContext对象。步骤3A从average,py文件中获取名为resulted的RDD,即待保存的数据。后的学生成绩数据保存为CSV文件。实现步骤如下。(详见教材)【学生】自行扫码观看配套微课,按照要求进行操作,如遇问题可询问老师【教师】巡堂辅导,及时解决学生遇到的问题课堂小结【教师】简要总结本节课的要点Spark中常见的文件格式将RDD保存为特定文件【学生】总结回顾知识点作业布置【教师】布置课后作业(1)完成项目二项目实训中与本课相关的习题;(2)根据课堂知识,课后自己尝试将RDD存储为不同类型的文件,并存储归纳后的学生成绩数据。【学生】完成课后任务教学反思