《《Spark大数据技术与应用案例教程》教案第20课分析社交网站的用户影响力.docx》由会员分享,可在线阅读,更多相关《《Spark大数据技术与应用案例教程》教案第20课分析社交网站的用户影响力.docx(12页珍藏版)》请在第壹文秘上搜索。
1、课题分析社交网站的用户影响力课时2课时(90min)教学目标知识技能目标:(1)掌握读取数据创建图的方法(2)掌握使用GraphFramc类的属性和图的叫操作方法处理图的方法(3)掌握图的常用算法素质目标:(1)运用图算法处理日常生活中的数据关联性问题。(2)加强自身观察能力,发掘事物之间的关联性。教学重难点教学重点:图的创建、图的数据操作、图的常用算法教学难点:使用图的常用算法解决实际问题教学方法案例分析法、问答法、讨论法、讲授法教学用具电脑、投影仪、多媒体课件、教材教学过程主要教学内容及步骤课前任务【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过APP或其他学习软件,完成课前任
2、务请大家回顾上一节课所学知识,并了解GraPhFrameS中图的创建方法、操作方法和常用算法。【学生】完成课前任务考勤【教师】使用APP进行签到【学生】班干部报请假人员及原因问题导入【教师】提出以下问题:你知道在GraphFrames中创建图的方法吗?【学生】思考、举手回答传授新知【教师】通过学生的回答引入新知,介绍图的创建、图的数据操作、图的常用算法等知识一、图的创建【教师】介绍GraphFrames中图的创建方法GraphFrame是GraphFrames中的核心相象,用于表示和操作图数据。从逻辑上看,GraphFrame由顶点DataFrame和边DataFrame组成顶点DataFra
3、me必须包含名为id的列,用于存储唯一的顶点IDe边DataFrame必须包含名为src和dst的列,分别用于存储边的源顶点ID和目标顶点IDe在GraphFrames中,创建图的方法有三种:第一种是根据顶点DataFrame和边DataFrame创建图;第二种是根据RDD创建图;第三种是读取文件中的数据创建图。1.根据顶点DataFrame和边DataFramc创建图在GraphFrames中,可以使用GraPhFrame()方法根据顶点DalaFrame和边DalaFrame创建图,该方法的基本格式如下。GraphFrame(v,e)其中,参数V表示保存顶点信息的DataFrame;参数e
4、表示保存边信息的DataFramee【教师】通过例子,帮肋学生掌握根据顶点DataFrame和边DataFrame创建图的方法【例6-1根据顶点DataFrame和边DataFrame创建图。使用GraPhFrame()方法以城市作为顶点,距离作为边创建图,图的顶点信息和边信息如图6-5所示。hadoopbogon$pysparkfromgraphframesimportGraphFrarnc建顶点DataFrame,包含顶点的标识符(id)和城市(city)vertices=spark.createDataFrame(A,NewYork),(B,London),(,C,Tokyo),idci
5、ty0)舱J建边DataFrame,包含边的源顶点(Src)、目标顶点(dst)和距离(distance)edges=spark.createDataFrame(A,B,55),(B,C,6500),(C,A,8000),I,srcdst,distance)#根据顶点和边的DataFrame创建图graph=GraphFrame(vertices,edges)#显示图的顶点信息graph.vertices.show()#显示图的边信息+srcdstdistance)ABl55001BCl6500ClAl8000十 graph. edges. show()graph.edges.show()gr
6、aph.vertices.show()+IidIcity+IANewYorkBLondon)ICTokyoI+图的顶点信息和边信息图6-52.根据RDD创建图在GraphFrames中,如果斓存储在RDD中,我们首先需要将RDD转换为DataFrame,然后使用GraPhFrameo方法创建图。【教师】通过例子,帮助学生掌握根据RDD创建图的方法【例6-2根据RDD创建图,输出图的顶点信息和边信息,如图6-6所示。|hadoopbogon-$pysparkfromgraphframesimportGraphFrame制建RDD,包含(顶点ID,属性沅组rdd=spark.sparkContex
7、t.parallelize(l,A),(2,B).(3,rC)# 将RDD转换为DataFramevertices_df=rdd.toDF(,id,attribute)跄J建RDD,包含(源顶点ID.目标顶点ID,边属性)元组edges_rdd=spark.sparkContexl.parallelize(1,2,edge).(2,3.,edge2,)# 将RDD转换为DataFrameedges-df=edges_rdd.toDF(src,dst,relationship)# 使用GraPhFrame()方法创建图 graph.vertces.show() graph.edges.show(
8、) graph, vertices, show() +I idattribute) +I1|AlI2BlI3Clgraph=GraPhFrame(VertiCeS_df,edges_df)graph.edges,show()+Isrcdstrelationship(+I12edgel|23edge2|.图6-6图的顶点信息和边信息3.读取文件中的数据创建图在GraPhFmmeS中,如果数据存储在文件中(如CSV、ParqUel等文件),我们需要先使用SPark读取文件中的数据创建DataFrame,然后使用GraPhFrameo方法创建图。【教师】通过例子,帮助学生掌握通过读取文件中的数据创建
9、图的方法【例6-3读取文件中的数据创建图。新建7usrIOCalsparkmycodegraph”目录,并在该目录下新建两个文本文件。“user.txt”文件用于保存用户信息数据,包含用户ID、姓名和职业3个字段,如图6-7所示。“relationship.txt”文件用于保存用户之间的关系数据,包含两个用户ID和用户之间的关系,如图6-8所示。打开(0)区usertxt保存三X打开9)Iarelati保存(三)三IXuserlJohnstudentuser2Janepostdocuser3Davidprofessoruserluser2collaboratoruser3user2leader
10、user3userladvisor图&7用户信息数据图6-8用户之间的关系数据读取文件中的数据创建DataFrame然后使用GraPhFrameO方法创建图输出图的顶点信息和边信息,如图6-9所示。hadoopbogon$pysparkfromgraphframesimportGraphFrame# 读取user.txt文件中的数据创建RDDvertices_rdd=spark.sparkContext.textFile(file:/usr/local/spaik/mycode/graph/user.txt).map(lambdaline:line.split()# 将RDD转换为顶点Data
11、Framevertices_df=spark.createDataFrame(vertices_rdd,id,name,profession)# 读取relaiionship.txt文件中的数据创建RDDdges_rdd=spark.sparkContext.textFile(file:/usr/local/spark/mycode/graph/relationship.txt).ma(lambdaline:line.split()# 将RDD转换为边DataFrameedges_df=spark.createDataFrame(edges-rdd,src,dst,relationship)愉
12、建图graph=GraPhFrame(VertiCeS_df,edges_df)graph.vertices.show()graph.edges.show() graph.vertices.show()id I ameprofession)Iuserl John student) Iuser2 Janej postdoc Iuser31Davidj professor graph. edges. show()I src dstrelationship!Iuserl user3 I user3+user21 collaborator!user2Ileader)userlIadvisor+图69图
13、的顶点信息和边信息二、图的数据操作【教师】介绍GraPhFrameS中图的数据操作创建图之后,可以对图中的数据进行操作,帮助用户从图中提取有用信息。在GraphFrames中,GraphFrame类包含vertices、edges、triplets、inDegrees、OutDegrees和degrees等属性。这些属性的详细说明如表6-1所示。表6-1GraphFrame类的属性属性说明vertices通过VertiCeS属性,用户可以访问和操作图中的顶点集合edges通过edges属性,用户可以访问和操作图中的边集合triplets通过triplets属性,用户可以访问和操作图中的三元组集
14、合。其中,三元组由起始顶点src、边edge和目标顶点dst组成inDegrees通过inDegrees属性,用户可以进行入度分析和筛选操作OutDegrees通过OUtDegreeS属性,用户可以进行出度分析和筛选操作degrees通过degrees属性,用户可以进行度分析和筛选操作(详见教材)表6-2常用的数据操作方法方法DataFrameGraphFramefilter(condition)使用给定条件筛选DataFrame中的数据根据指定的筛选条件对顶点或边进行筛选filterVertices()filterEdges()杳询符合条件的顶点或边OrderBy(*cols,ascending)按照指定列对数据进行排序按照指定列对顶点或边进行排序groupBy(*cols)按照指定列对DataFrame进行分组按照指定列对顶点或边进行分组withColumn(colName,col)添加新的列或修改现有的列用于映射图的顶点或边,即向顶点或边中添加新的列或修改顶点或