网站建设成本分析,国外创意产品设计作品,虚拟主机上传网站,妇产科网站建设文章目录1. 实战概述2. 实战步骤2.1 用户关系网络图2.2 准备数据文件2.2.1 创建本地文件2.2.2 创建HDFS目录2.2.3 上传数据文件到HDFS2.3 创建与存储图2.3.1 创建图2.3.1.1 导入GraphX包2.3.1.2 根据有属性的顶点和边构建图#xff08;Graph()#xff09;2.3.1.3 根据边创建图…文章目录1. 实战概述2. 实战步骤2.1 用户关系网络图2.2 准备数据文件2.2.1 创建本地文件2.2.2 创建HDFS目录2.2.3 上传数据文件到HDFS2.3 创建与存储图2.3.1 创建图2.3.1.1 导入GraphX包2.3.1.2 根据有属性的顶点和边构建图Graph()2.3.1.3 根据边创建图Graph.fromEdges()2.3.1.4 根据边的两个顶点的二元组创建图Graph.fromEdgeTuples()2.3.2 缓存与释放图2.4 查询与转换数据2.4.1 数据查询2.4.2 数据转换2.5 转换结构与关联聚合数据2.5.1 结构转换2.5.2 数据关联聚合3. 实战总结1. 实战概述本次实战围绕 Spark GraphX 构建学术用户关系网络图展开通过准备顶点与边数据、上传至 HDFS并使用Graph()、Graph.fromEdges()和Graph.fromEdgeTuples()三种方式创建图对象验证了图的正确加载与结构完整性为后续图计算奠定基础。2. 实战步骤2.1 用户关系网络图绘制用户关系网络图该图展示了一个学术用户关系网络节点代表用户如学生、教授、博士后边表示关系如导师、同事、合作者。例如mike 是 brown 的学生green 与 mike 合作brown 与 alice 为同事green 也是 brown 的 PI。体现了学术协作与层级结构。2.2 准备数据文件2.2.1 创建本地文件创建用户关系网络图顶点数据文件执行命令vim vertices.txt创建用户关系网络图边数据文件执行命令vim edges.txt2.2.2 创建HDFS目录执行命令hdfs dfs -mkdir -p /graphx/data2.2.3 上传数据文件到HDFS执行命令hdfs dfs -put vertices.txt /graphx/data执行命令hdfs dfs -put edges.txt /graphx/data2.3 创建与存储图2.3.1 创建图2.3.1.1 导入GraphX包执行命令scala import org.apache.spark._ import org.apache.spark.graphx._ import org.apache.spark.rdd.RDD结果说明该图展示了在 Spark Shell 中成功导入核心包的过程。三条import语句分别引入了 Spark 核心、GraphX 图计算和 RDD 操作相关类为后续分布式数据处理和图算法开发做好准备表明环境配置正确可进行 Spark 编程。2.3.1.2 根据有属性的顶点和边构建图Graph()构造有属性的顶点和边的图// 创建顶点 RDDvalusers:RDD[(VertexId,(String,String))]sc.textFile(hdfs://master:9000/graphx/data/vertices.txt).map{linevalfieldsline.split( )(fields(0).toLong,(fields(1),fields(2)))}// 创建边 RDDvalrelationships:RDD[Edge[String]]sc.textFile(hdfs://master:9000/graphx/data/edges.txt).map{linevalfieldsline.split( )Edge(fields(0).toLong,fields(1).toLong,fields(2))}// 定义默认用户用于处理缺失顶点valdefaultUser(Black Smith,Missing)// 构建图对象valgraph_urelateGraph(users,relationships,defaultUser)结果说明代码成功在 Spark Shell 中执行从 HDFS 加载顶点和边数据构建了 GraphX 图对象。输出显示 users 和 relationships RDD 已创建defaultUser 定义完成最终生成 graph_urelate 图实例表明图结构构建成功可进行后续图计算操作。查询图的顶点执行命令graph_urelate.vertices.collect.foreach(println)结果说明执行命令后输出了图中所有顶点的属性信息显示了每个用户节点的 ID 和对应的角色如 alice 是 professormike 是 student 等表明图的顶点数据已成功加载并可访问验证了 GraphX 图结构构建正确。查询图的边执行命令graph_urelate.edges.collect.foreach(println)结果说明执行命令后输出了图中所有边的信息显示了节点之间的关系类型如 3 和 7 是合作者Collaborator5 和 3 是导师关系Advisor等表明图的边数据已正确加载验证了用户关系网络结构构建成功。2.3.1.3 根据边创建图Graph.fromEdges()利用Graph.fromEdges()方法创建图// 读取边数据文件valrecords:RDD[String]sc.textFile(hdfs://master:9000/graphx/data/edges.txt)// 解析每行数据为 Edge 对象valfollowers:RDD[Edge[String]]records.map{linevalfieldsline.split( )Edge(fields(0).toLong,fields(1).toLong,fields(2))}// 基于边构建图顶点属性统一设为默认值 1LvalgraphFromEdgesGraph.fromEdges(followers,defaultValue1L)结果说明代码成功从 HDFS 读取边数据并解析为 Edge RDD构建了图对象graph_fromEdges。输出显示 records、followers 和 graph_fromEdges 均已正确创建表明边数据加载和图结构初始化完成可进行后续图计算操作。查询图的顶点执行命令graph_fromEdges.vertices.collect.foreach(println)结果说明该命令输出了图中所有顶点的 ID 及其属性显示每个节点的值均为 1默认值表明Graph.fromEdges成功从边数据推导出顶点集合并为每个顶点分配了统一的默认属性验证了图结构构建正确。查询图的边执行命令graph_fromEdges.edges.collect.foreach(println)结果说明该命令输出了图中所有边的信息显示了节点之间的关系类型如 3 和 7 是合作者Collaborator5 和 3 是导师关系Advisor等表明边数据已正确加载并保留原始属性验证了图结构构建成功。2.3.1.4 根据边的两个顶点的二元组创建图Graph.fromEdgeTuples()提示此方式适用于仅需源点和目标点、忽略边属性的场景。若需保留关系类型如 “Advisor”应使用 Edge 对象而非二元组。利用Graph.fromEdgeTuples()方法创建图// 读取边数据文件valrecords:RDD[String]sc.textFile(hdfs://master:9000/graphx/data/edges.txt)// 解析为 (srcId, dstId) 二元组 RDDvaledgesRDD:RDD[(VertexId,VertexId)]records.map(lineline.split( )).map(fields(fields(0).toLong,fields(1).toLong))// 基于边二元组构建图顶点属性设为默认值 1LvalgraphFromEdgeTuplesGraph.fromEdgeTuples(edgesRDD,defaultValue1L)结果说明代码成功从 HDFS 读取边数据解析为顶点 ID 的二元组 RDD并通过Graph.fromEdgeTuples构建图对象。输出显示 records、edgesRDD 和 graphFromEdgeTuples 均已正确创建表明图结构初始化成功可进行后续图计算操作。查询图的顶点执行命令graphFromEdgeTuples.vertices.collect.foreach(println)结果说明该命令输出了图中所有顶点的 ID 及其默认属性值1表明Graph.fromEdgeTuples成功从边数据推导出顶点集合并为每个顶点分配统一默认属性验证了图结构构建正确顶点信息完整。查询图的边执行命令graphFromEdgeTuples.edges.collect.foreach(println)结果说明该命令输出了图中所有边的结构显示每条边的源点、目标点及默认属性值1表明Graph.fromEdgeTuples成功构建了边集合且边数据完整保留验证了图的边信息正确加载并可访问。2.3.2 缓存与释放图2.4 查询与转换数据2.4.1 数据查询2.4.2 数据转换2.5 转换结构与关联聚合数据2.5.1 结构转换2.5.2 数据关联聚合3. 实战总结