《Spark大数据技术与应用案例教程》教案第11课存储整理后的商品信息.docx
课题存储整理后的商品信息课时2课时(90min)教学目标知识技能目标:(1)掌握将DataFrame数据保存到数据文件的方法(2)掌握将DaIaFrame数据保存到MySQL数据库的方法(3)掌握将DataFrame数据保存到Hive表的方法素质目标:培养举一反三的能力,学会融会贯通教学重难点教学重点:将DataFrame数据保存到数据文件、MySQL数据幅口Hive表教学难点:将DaIaFrame保存为不同的数据类型教学方法案例分析法、问答法、讨论法、讲授法教学用具电脑、投影仪、多媒体课件、教材教学过程主要教学内容及步骤课前任务【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过APP或其他学习软件,完成课前任务请大家了解将DataFrame保存为不同数据类型的方法.【学生】完成课前任务考勤【教师】使用APP进行签到【学生】班干部报请假人员及原因问题导入【教师】提出以下问题:DataFrame可以保存为哪些数据类型?【学生】思考、举手回答传授新知【教师】通过学生的回答引入新知,讲解将DataFrame数据保存到数据文件、MySQL数据库和Hive表的方法一、保存DataFrame数据到数据文件【教师】介绍保存DataFrame数据到数据文件的方法保存DataFrame数据到数据文件时,使用SparkSession对象的write属性获取SparkSQL中用于将DataFrame存储到其他存储系统的对象DataFrameWriter后,可以直接使用DataFrameWriter对象的text。、json()xCSVo或ParqUe()方法将DalaFrame保存到文本文件、JSON文件、CSV文件或ParqUel文件;也可以使用DataFrameWriter对象的format。方法指定输出数据的格式,接着使用该对象的跄ve()方法将DataFrame的数据彳呆存到不同的数据文件。参考示例如下。#保存DataFrame数据到文本文件中»>df.write.text("siudent.txt")排方法»>df.write.fbnat("text").save("student.txt")#方法二#保存DataFrame类据至UJSON文彳牛中»>df.write.json("student.json")#方;-»>df.write.format("json").save("student.jsonM)#方法二卅呆存DataFrame娄据至!CSV文件中»>df.write.csv(''student.csv")#方法»>df.write.format("csv',).save("student.csv,')#方法二#保存DataFrame数据到Parquet文件中»>df.write.parquet("student.parquet")#方法»>df.write.fbrmat("parquet',).save("student.parquet")#方法二【教师】通过例子,帮助学生掌握保存DataFrame数据到数据文件的方法【例3-13将DataFrame数据保存到不同类型的数据文件,实现步骤如下。使用read.json()方法读取"studenl.json”文件中的数据创建DataFrame(即df).从df中选取name字段和age字段,然后使用Write.formal0.save()方法将字段数据保存到JSON文件中,生成一个"SludenLsaveJson"目录,目录中包含"pari-00000-9e57ea6a-ef8d-4fd9-bfb-1b75c1(X)cc3c-cOOO.jsonw和“.SUCCESS”文件,其中"part-000(X)-9e57ea6a-ef8d-4fd9-b11)b-1b75c100cc3c-c000.jsonr,文件用于存储DaIaFramC的娄掂,如图3-32所示。从df中选取name字段,然后使用Write.fonat().save()方法将字段数据保存到Parquet文件中,生成一个"student-save.parquet"目录,该目录中包含“part-00000-9259062e-80c9-4609-8c9f9095aa338cc3000.snappy.parquei"和'SUCCESS”文彳牛。hadoopbogon-$pyspark#创建DataFrame»>df=spark.read.json("fiIe:/usr/local/spark/mycode/DataFrame/student.json")(详见教材)打开9)B("name":n三",''age":2)("name":"5K三","age,:21)<"name'*:"?E3","age":22)"name":"赵六","age":22图3-32JSON文件内容二、保存DataFrame数据到酎SQL数据库【教师】介绍保存DataFrame数据到MySQL数据库的方法保存DataFrame数据到MySQL数据库时,使用SparkSession对象的write属性获取DataFrameWriter对象后,可以使用DataFrameWriter对象的jdbc()方法将DataFrame保存到MySQL数据库中;也可以使用DataFrameWriIer对象的format。方法指定输出数据的格式,然后使用该对象的OPtiOn()方法设置相关的连接信息和表名等,接着使用该对象的mode。方法指定数据的写入模式,最后使用该对象的Saveo方法将DataFramc的数据保存到MySQL数据库中。参考示例如下。# 方法一df.write.jdbc(url,table,mode,properties)# 方法二df.write.format(',jdbc,).option("driver","com.mysql.jdbc.Driver").option("ur,"jdbc:mysql:/hostname:port/database").option("dbtable","table_name").option("user","username").option("password","password").mode("append").save()【教师】通过例子,帮助学生掌握保存DataFrame数据到MySQL数据库的方法【例3-14任务二中,已经创建了一个MySQL数据库spark,并创建了一个student表。现将DataFrame的数据保存到MySQL数据库spark中的student表中,然后重新查询student表的数据,如图333所示。|hadoopbogon-$pyspark# 读取JSON文件中的幡创建DataFrame»>df=spark.read.format(',json").option("header","irue").load("file:/usr/local/spark/mycode/DataFrame/student.json")# 设置连接信息和表名»>mysql_url="jdbc:mysql:/localhost:3306/spark"»>table-name="student"»>username="root"»>password="123456"# 将DaiaFramc的数据保存到MySQL数据库中»>df.write.format("jdbc").option("url",mysql-url).option("dbtable",table_name).option("user",username).opiion("password",password).mode("append").save()»>exit()#退出pyspark# 蛰询student表的数据hadoopbogon$mysql-uroot-mysql>usesparkmysql>select*fromstudent;mysql>select*fromstudent;+Inameagecollegeiceb二三四六A1B0王张李赵0 8 0 12 22 12 2 2 2院院院院院院 学学学学学学 术计息械息文 艺会信机信人6rowsinset(0.00sec)图3-33查询student表的数据三、保存DataFrame数据到Hive表【教师】介绍保存DataFrame数据到Hive表的方法保存DataFrame数据到Hive表的方法是,使用DalaFrameWriler对象的SaVeASTabIeO方法将DataFramc的数据保存到Hive表。【教师】通过例子,帮助学生掌握保存DataFrame数据到Hive表的方法【例3-15现有一个DataFramc(即df),使用SaVeASTabICO方法将DataFnImC的数据保存到Hive表 my_table 中。»> df.write.saveAsTable(,my-database.my-table')【学生】聆听、思考、理解、记录【教师】介绍“存储整理后的商品信息”的大概流程,安排学生扫描微课二维码观看视频”存储整理后的商品信息“(详见教材),并要求学生进行相应操作步骤!在终端执行以下命令,在MySQL数据库spark中创建SIoCkNaIUS表。IhadooPbogon|$mysql-uroot-pmysql>usesparkmysql>createtablestock_status(IDint,namechar(30),stockint,stock_staluschar(40);步骤2A打开PyCharm,在"dataFrame”目录下新建"write_to_mysql.py”文件。步骤3A在"wrileo_mysql.py"文件中编写应用程序,将库存小于50的商品信息保存到MySQL数据库spark的SlOCk_siaius表中。(详见教材)【运行结果】在PyCharm中运行代码,输出提示信息,如图3-34所示.在终端执行以下命令,查询MySQL数据库spark的StoCk.status表中的所有数据,如图3-35所示。mysql>select*fromstock-status;课程实践mysq>selectfromstock.status;IIDInamestockstock.statusDataFranle数据保存成功!进程已结束,退出代码8 23 28 29 37 408 23 28 29 37 40西瓜 蓝色村衫 棒球帽 防晒帽擦窗器 空气净化器西瓜JS色村杉 样球帽 防晒帽擦窗器 空气净化器30 49 3530 3040 30 4935 3030 40货货货货货货货货货货货货 补补补补补补补补补补补补 要要要要要要要要要要要要 需需需需需需需需需需需需图3-34输出提示信息图3-35查询stock_status表中的所有数据【学生】自行扫码观看配套微课,按照要求进行操作,如遇问题可询问老师【教师】巡堂辅导,及时解决学生遇到的